承諾是一種方式。但是,如果您不喜歡它們,則可以使用名爲async的非常知名的庫。
以下是您可以對您的案例進行的操作。下面是它會採用並行處理是什麼樣的一個基本方式:
async.parallel([
function(done) {
fs.writeFile(fname1, fdata1, (err) => {
done(err, customResults1);
});
},
function(done) {
fs.writeFile(fname2, fdata2, (err) => {
done(err, customResults2);
});
}
],
// The callback when every function above is done
function(err, results) {
// `results` contains a collection of what you've passed
// on the `done` callbacks above
});
更具體到你的使用情況,它看起來像:
async.parallel(
['file1', 'file2'].map(function(fname) {
return function(done) {
fs.writeFile(fname, fdata, (err) => {
done(err, customResults);
});
};
}),
// The callback when every function above is done
function(err, results) {
// `results` contains a collection of what you've passed
// on the `done` callbacks above
}
);
如果你想在任務運行一個一個爲了您將使用async.series。如果您希望函數將結果傳遞給下一個任務,則可以使用async.waterfall。當然,還有其他功能可以使用,但我提到的功能是一些非常常見的功能。
承諾和'Promise.all' – zerkms
常量writeFileP =需要( '藍鳥')。promisify(FS。 writeFile); // writeFileP(...)返回一個承諾 – brainjam