如何在nodejs中以同步方式运行foreach

时间:2018-05-10 14:51:54

标签: node.js promise

我在nodejs中运行电子邮件警报发送作业,由于异步,命中数太多。甚至弹性搜索抛出超时异常。

与节点一起使用Q promise。

请告诉我如何解决这个问题。

1 个答案:

答案 0 :(得分:-1)

如果您可以使用新节点,谷歌如何使用async / await,那么您可以循环所有请求并等待它们。

如果你不能,你可以递归地做:

function processAllOneByOne(fns, i){
  if (i >= fns.length)  { return Promise.resolve({done:true}) }
  fns[i]().then(() => processAll(fns, i+1));
}

并用

调用它
processAllOneByOne(fns, 0)

请注意,一旦你创建了承诺,你就可以处理“内部”执行的方式。所以你需要fns这是函数数组,调用该函数创建并返回你想要等待完成的Promise。

所以推送像fns.push(() => sendAlert(some, paramaters))这样的东西,其中sendAlert正在创建你需要的Promise。