【问题标题】:how to run foreach in synchronous way in nodejs如何在nodejs中以同步方式运行foreach
【发布时间】:2018-10-20 21:25:33
【问题描述】:

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

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

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

【问题讨论】:

  • 请发布您的代码。 stackoverflow.com/help/mcve
  • 这真的取决于你的代码和你的异步操作。向我们展示您的代码,我们可以向您展示如何修复它!

标签: node.js promise


【解决方案1】:

如果你可以使用新的Node,谷歌如何使用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,您就无法处理它是如何“在内部”执行的。所以你需要有fns,它是一个函数数组,调用该函数会创建并返回你想要等待完成的 Promise。

所以推到fns.push(() => sendAlert(some, paramaters)) 之类的地方,其中 sendAlert 正在创建您需要的 Promise。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多