这里是初学者。我开始意识到我使用异步函数的方式可能没有充分利用异步特性。
我做这样的事情:
fs.readFile(file, function(err, data){
fs.readAnotherFile(anotherFile, function(err, data){
doThisAfterBothHaveLoaded();
});
})
})
但是,如果我在开始另一件事之前等待一件事完成,这不是违背了异步的目的吗?
那么我该如何去做这样的事情呢?:
fs.readfile(file, function(err, data){
doThisAfterBothHaveLoaded();
});
fs.readAnotherFile(anotherFile, function(err, data){
doThisAfterBothHaveLoaded();
});
回调中的函数在两者都加载后才会被调用?
根据我们的要求,我们可能需要等待一项操作完成才能开始另一项操作。
但就您的情况而言,如果这两个操作彼此不相关,并且您想在这两个操作完成后执行某些操作,则检查 async模块。
使用它,您可以编写:
async.each(['file1.txt', 'file2.txt'], function (filename, cb) {
fs.readFile(filename, function (err, data) {
if (err) {
return cb(err);
}
console.log("Reading " + filename + " complete!");
// do something with data
console.log(data);
cb(null);
});
}, function (err) {
console.log("Reading both files is complete");
});
我是一名优秀的程序员,十分优秀!