首页 > 解决方案 > 如何在nodejs中以同步方式运行foreach

问题描述

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

与节点一起,我正在使用 Q Promise。

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

标签: node.jspromise

解决方案


如果你可以使用新节点,谷歌如何使用 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)

请注意,一旦您创建了 Promise,您就无法处理它是如何在“内部”执行的。因此,您需要拥有fnswhich 是函数数组,调用该函数会创建并返回您想要等待完成的 Promise。

所以推到那里fns.push(() => sendAlert(some, paramaters)), sendAlert 正在创建你需要的 Promise。


推荐阅读