node.js - 如何在nodejs中以同步方式运行foreach
问题描述
我正在 nodejs 中运行电子邮件警报发送作业,由于异步,点击次数太多。甚至弹性搜索也会抛出超时异常。
与节点一起,我正在使用 Q Promise。
请告诉我如何解决这个问题。
解决方案
如果你可以使用新节点,谷歌如何使用 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
which 是函数数组,调用该函数会创建并返回您想要等待完成的 Promise。
所以推到那里fns.push(() => sendAlert(some, paramaters))
, sendAlert 正在创建你需要的 Promise。
推荐阅读
- c# - 无序执行是 .Net Core 应用程序中并发线程的常见问题吗?
- css - 为什么蓝色不加起来?
- c# - 在 Angular 和 .Net Core API 中显示自定义服务器端错误消息
- node.js - 如何将 json 对象附加到 javascript 文件中?
- vba - 从收到日期提取电子邮件附件
- video - 如何自动关闭 GStreamer 应用程序?
- node.js - 如何使用 zeit now server 为 NodeJS 表单应用程序提供服务
- android - $BITRISE_DEPLOY_DIR 有哪些可用文件?
- php - 从数据库的codeigniter中的开始时间字段计算结束时间
- javascript - 使用 angularjs 将 yaml 数据解析到浏览器