首页 > 解决方案 > async.forEachOfSeries 完成任务后如何调用函数

问题描述

我需要在 async.forEachOfSeries 完成它的任务后调用一个函数。我有一个名为rows. 它包含postId和其他信息。我需要在函数内部发出请求abc()以获取该特定帖子的评论并将其保存在数据库中。如果爬取完成,我会打电话callback()请求在rows. 循环完成后,我需要调用函数xyz()。这是一个示例代码:

function loopTest(){
    async.forEachOfSeries(rows, function (que, key, callback) {
        function abc(){
            //make request to facebookto get comments and stores in database
        }
        if(!commentCrawlingDone)
        {
            abc();
        }
        else{
            callback();
        }
    });

    xyz();
}

标签: javascriptnode.jsasynchronousasync.js

解决方案


https://caolan.github.io/async/v3/docs.html#eachOfSeries

您目前正在将两个参数传递给.eachOfSeries; 看起来你可以xyz作为第三个参数传递。

(rows是你的第一个参数,你的匿名函数(que, key, callback)是你的第二个参数。)

所以,而不是

...
  });

  xyz();

你会写

...
  }, xyz);

推荐阅读