繁体   English   中英

在async.each中回调

[英]Callback in async.each

我有异步问题。 对于每个元素,我必须调用一个异步函数

这是我的示例对象

    [ { bar: 'foo',
    buz: [ [Object], [Object], [Object] ] },
  { bar: 'foo2', buz: [ [Object] ] } ]

  -----
  buz = { _id: '55555555ffffff000010200a', name: 'foo }

对于每个buz._id,我必须调用另一个异步方法“ item.someAsyncCall”

async.each(req.body.roles,
    function(item, callback){
        callback();

        async.each(item.site,
            function(item, callback){


                 item.someAsyncCall(function (){
                  // Async call is done, alert via callback
                  console.log('inside==> '+result);
                  callback();
                });

            },
            function(err){
                if (err) {
                    console.log('A file failed to process');
                } else {
                    console.log('FIRST');
                }
            }
        );


    },
    function(err){
        if (err) {
            console.log('A file failed to process');
        } else {
            console.log('Second');
        }
    }
);


console.log('OUT ==>');

结果:

内部==>否

内部==> true

内部==>否

第一

内部==>否

第一

但是从不叫秒,从不叫OUT ==>

对于两个嵌套(并行)for循环的异步等效项,请尝试

async.each(outerList, function (item, outerCallback) {
    async.each(item.innerList, function (innerItem, innerCallback) {
        doSomethingAsync(innerItem, innerCallback);
    }, outerCallback);
}, function (err) {
    // everything is done, or you get an error
});

一种更简单的方法可能是将列表弄平,而只在该扁平化的列表上使用单个async.each

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM