从nodejs中的数组中提取列表文件,但逐步执行nodejs

问题描述 投票:0回答:2

我正在尝试从数组列表中提取大约100个文件的列表,但我将逐个提取。

 fs.readdir(config.tmp_directory, function(error, files){
    if (error) {
      return callback(error)
    }
    count_file = files.length
    files.map(function(file){
      targz.decompress({
        src:  config.tmp_directory + "/" + file,
        dest: config.extract_directory + "/"
        }, function(err){
            if(err) {
                log_erreur.push(file)
                return count_err =  count_err + 1;
            }
            console.log("file : " + config.extract_directory + "/" + file + " Done!");
            count_succes = count_succes + 1;
            if (count_succes + count_err == count_file) {
              process.stdout.write("\n")
              process.stdout.cursorTo(0);
              process.stdout.write("Extract Sequency Finished...");
              process.stdout.write("\n")
              return callback(null,"next", log_erreur)
            }
        });
    })
  });
};

但是这段代码并行启动所有提取文件。

我怎样才能一次提取一个?

javascript arrays node.js async-await
2个回答
0
投票

你可以在这里使用async npm模块。

fs.readdir(config.tmp_directory, function(item, files){
    if (error) {
        return callback(error)
    }
    count_file = files.length
    async.eachSeries(files,function(item, innercb){
        // do here with item 
        console.log(item)
        innercb()
    }), function(err, result){
        // after finish all files you can call here final callback
        // main callback
    }
})

0
投票

谢谢你,工作正常但是这样:

fs.readdir(config.tmp_directory, function(item, files){
if (error) {
  return callback(error)
}
count_file = files.length
async.eachSeries(files,function(item, innercb){
// do here with item 
  console.log(item)
 innercb()
}, function(err, result){
   // after finish all files you can call here final callback
   // main callback
   });
});

删除每个系列中的')'并输入“function(err,result)”

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.