Node.js async.each';t调用回调函数
我在node.js中的aysnc函数中遇到了一些问题。下面是我的代码:Node.js async.each';t调用回调函数,node.js,async.js,Node.js,Async.js,我在node.js中的aysnc函数中遇到了一些问题。下面是我的代码: let async = require("async"); let list1 = { "aaa": true, "bbb": true } let list2 = [{ "name": "aaa" }, { "name": "bbb" }]; let flag = true; let i = 0; async.each(list2, function (activity, callback) { if
let async = require("async");
let list1 = {
"aaa": true,
"bbb": true
}
let list2 = [{
"name": "aaa"
}, {
"name": "bbb"
}];
let flag = true;
let i = 0;
async.each(list2, function (activity, callback) {
if (!list1[activity['name']]) {
flag = false;
}
i++;
if (i === list2.length) {
callback(null);
//callback("error");
}
}, function (err) {
console.log(err);
console.log("completed callback");
//need the value of flag to execute my business logic
});
如果列表1中的值都是
true
,则标志的值将是true
,我将根据标志执行业务逻辑。我还设置了一个I
来判断它是否是最后一个循环,所有循环执行完毕,我想调用回调。但是,如果我设置回调(“error”)代码>我可以调用最后的回调。如果我设置了回调(null)代码>,我无法调用最终回调。您可以在回调中使用您的标志变量,因为它将在范围内,并且您不需要在循环结束时手动调用回调
只要没有发生错误,我们将在每次迭代中不传递任何参数的情况下调用回调
在这种情况下,以这种方式使用标志是安全的,因为我们只会在逻辑需要时将其设置为false
let async = require("async");
let list1 = {
"aaa": true,
"bbb": true
}
let list2 = [{
"name": "aaa"
}, {
"name": "bbb"
}];
// Assume flag is initally true.
let flag = true;
async.each(list2, function (activity, callback) {
if (!list1[activity['name']]) {
flag = false;
}
// Pass an error if it occurs.
callback();
}, function (err) {
if (err) {
console.error("An error occurred: ", err);
} else {
// You can use flag in your business logic now.
console.log(`Completed callback: flag: ${flag}`);
}
});