这是一段代码段
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; }
});
}
有没有办法知道他们何时全部被执行?
答案 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和回调代码混合起来可能很奇怪。