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

时间:2018-01-02 05:06:21

标签: javascript arrays node.js async-await

我试图从数组列表中提取大约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)
            }
        });
    })
  });
};

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

我如何一次提取一个?

2 个答案:

答案 0 :(得分: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
    }
})

答案 1 :(得分: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
   });
});

删除')'在每个系列中并放入"功能(错误,结果)"