Node.js使用async.forEach和异步操作

时间:2015-08-16 01:14:54

标签: javascript node.js asynchronous

有一个函数,需要遍历一个数组,对每个项执行异步操作,然后最终回调给调用者。

我可以获得async.forEach工作的基本情况。 当我这样做时,它可以工作

async.forEach(documentDefinitions(), function (documentDefinition, callback) {               
    createdList.push(documentDefinition);
    callback(); //tell the async iterator we're done

}, function (err) {
    console.log('iterating done ' + createdList.length);
    callback(createdList); //tell the calling method we're done, and return the created docs.
});

createdList的长度是正确的长度。

现在,我希望每次循环都执行另一个异步操作。所以我尝试将代码更改为以下内容;

function insert(link, callback){
    var createList = [];

    async.each(
       documentDefinitions(), 

       function iterator(item, callback) {
           create(collectionLink, item, function (err, created) {
               console.log('created');
               createdList.push(created);
               callback();
           });
       },

       function (err) {
          console.log('iterating done ' + createdList.length);
          callback(createdList);
       }
    );
}

其中create()是我的新异步操作。 现在我得到一个无限循环,我们似乎永远不会遇到回调(createdList);

我尝试在async create()方法的回调中移动callback(),但这些都不起作用。

请帮助我,我陷入了回调地狱!

0 个答案:

没有答案