async foreach无法正常工作nodejs

时间:2018-03-19 11:28:18

标签: mysql node.js

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方法。

2 个答案:

答案 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});
});