我想在不使用 Promise & Async await 的情況下啟動一系列異步任務。我的作業流程是:。任務1 。任務 2。任務 3 和 4(并行)
我已經為此嘗試了異步庫。這對于一系列順序任務或一系列并行任務都可以。但是為了實施我的作業流程,我暫時被卡住了。
const async = require('async');
const fs = require('fs');
const readFile1 = (name, callback) => {
fs.readFile(name, 'utf-8', (err, data) => {
if (err) {
callback(err);
}
console.log(data);
callback(null, data);
});
}
async.series([
function(callback1) {
async.series([
function(callback1) {
readFile1('./1.txt', callback1);
},
function(callback1) {
readFile1('./2.txt', callback1);
},
], function(err, results) {
console.log('series ', results);
});
},
function(callback2) {
async.parallel([
function(callback2) {
readFile1('./3.txt', callback2);
},
function(callback2) {
readFile1('./4.txt', callback2);
},
], function(err, results) {
console.log('parallel ', results);
});
}
]);
目前只執行第 1 步和第 2 步。您對此有什么想法嗎(除了使用帶有 async / await 和 promise 的更現代的代碼樣式之外?)
模糊
uj5u.com熱心網友回復:
您需要呼叫頂級回呼才能async.series()繼續下一步:
async.series([
function (callback) {
async.series(
[
function (callback1) {
readFile1("./1.txt", callback1);
},
function (callback2) {
readFile1("./2.txt", callback2);
},
],
function (err, results) {
console.log("series ", results);
return callback(err, results); // <-- here
}
);
},
function (callback) {
async.parallel(
[
function (callback1) {
readFile1("./3.txt", callback1);
},
function (callback2) {
readFile1("./4.txt", callback2);
},
],
function (err, results) {
console.log("parallel ", results);
return callback(err, results); // <-- and here
}
);
},
]);
(重命名回呼名稱以使事情更清楚)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/498346.html
