我在nodejs中运行电子邮件警报发送作业,由于异步,命中数太多。甚至弹性搜索抛出超时异常。
与节点一起使用Q promise。
请告诉我如何解决这个问题。
答案 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。