我怎么知道一系列函数何时在Node js中完成了它们的执行?

时间:2014-11-09 22:31:00

标签: node.js asynchronous

这是一段代码段

var zip = new require('node-zip')(data, {base64: false, checkCRC32: true});

for (var i in zip.files) {
    fs.writeFile(path.join(to, i), zip.files[i], function(err) {
        if (err) { error = err; }
    });
}

有没有办法知道他们何时全部被执行?

2 个答案:

答案 0 :(得分:1)

用于处理多种类型异步操作的常用模块是async.js模块。事实上,它是{/ 3}}背后的最重要的模块。

在你的情况下,我推荐使用async.series函数。

var async = require('async');
var zip = new require('node-zip')(data, {base64: false, checkCRC32: true});

async.eachSeries(zip.files, function(file, cb) {
    fs.writeFile(path.join(to, i, file, function(err) {
      if(err) return cb(err);
      cb();
    });
  },
  function(err) {
    if(err) throw err;
  }
);

答案 1 :(得分:0)

常见问题。尝试使用抽象计数器方法的each-async,这样您就不必自己编写。您也可以查看promises,但如果您的代码已经不使用promise,那么这可能不起作用;将Promises和回调代码混合起来可能很奇怪。