睡眠/等待,直到在异步循环过程中完成该过程

时间:2017-09-19 02:03:18

标签: node.js asynchronous

我用请求加载一个json数据(长度为125664),从那个数据开始,我用for循环,当然我不能一次全部显示它,因为它可能导致内存泄漏和那么,如何在每一行的每一行上使用休息时间,我尝试了各种方法,范围从setTimeout等,但没有任何工作呢

目前我的代码:

request({
  url: config.url.productSource,
  json: true
}, function(error, response, body) {
  console.log(body.length);
  for(let link of body) {
    console.log(link);
    product(link); // call puppeteer headless browser (async)
    stats(link); // call puppeteer headless browser (async)
  }
});

2 个答案:

答案 0 :(得分:1)

看起来你想要async& await。将回调更改为async功能,并在木偶操作时将await更改。

request({
  url: config.url.productSource,
  json: true
}, async (error, response, body) => {
  console.log(body.length);
  for(let link of body) {
    console.log(link);
    await product(link); // call puppeteer headless browser (async)
    await stats(link); // call puppeteer headless browser (async)
  }
});

假设您的产品和统计功能已经异步。

答案 1 :(得分:0)

我无法弄清楚你要做什么,如果它是对函数product和stats的调用并行化,或者确保foreach循环等到异步调用都完成,那么我就不能要找到确切的代码,无论哪种方式,在nodejs中都有一个名为async的模块,它可以让你玩你想做的事情。组织算法并构造正确的并行或系列调用是一个问题。

看看这里:async