Async.each(asd, (items, callback) => {
req.models.aswdf.find({id: items.id}, function (err, result){
category.push(result[0].asd);
});
callback();
}, (err) => {
if (err)
next(err, null);
});
return done(null, {displayName: people[0].fullName(),id: people[0].id, email: people[0].email, role: category});
我正在使用nodejs,我想实现async for-each。我作为对象数组传递asd并调用另一个从mysql获取数据的方法,但它不能正常工作它进入循环并退出它并调用done方法。 我想首先执行循环并调用done方法。
答案 0 :(得分:0)
Async.each(asd, (items, callback) => {
req.models.aswdf.find({id: items.id}, function (err, result){
category.push(result[0].asd);
callback();
});
}, (err) => {
if (err)
next(err, null);
return done(null, {displayName: people[0].fullName(),id: people[0].id, email: people[0].email, role: category})
});
答案 1 :(得分:0)
在异步外部编写的代码将异步执行。如果你希望你的done
函数在循环完成后执行,请在if条件之后写,如上面的Sagar所提到的那样。
Async.each(asd, (items, callback) => {
req.models.aswdf.find({id: items.id}, function (err, result){
category.push(result[0].asd);
});
callback();
}, (err) => {
if (err)
next(err, null);
return done(null, {displayName: people[0].fullName(),id: people[0].id, email: people[0].email, role: category});
});