javascript - 等待 Node.js 中每次迭代的 promise

标签 javascript node.js

我正在开发一个nodejs应用程序,需要从数组(在设置对象中)获取设置,根据设置调用rest api并将响应写入mongodb,并对数组中的下一个设置重复此操作。

这是该应用程序的简化版本

var setting //global
process(){ //top level function
    for(let s of config.settings){
    setting = s;
    getData();
  }
}

function getData(){
    init()
    .then(makeRequest)      // constructs and makes the rest api call
    .then(insert)           // writes the response to the db
    .catch(function(err){   
    // logs err
   }
}

运行它时,只有最后设置的数据(在数组中)被写入数据库,并且每次迭代都会发生这种情况。基本上,相同的数据会在数据库上写入尽可能多的迭代。 我从中看到的问题是 for 循环在 Promise 返回值之前完成执行。 我看过 async.for 的一些例子 有关解决此问题的任何建议。您如何设计这种流程?

最佳答案

您可以将设置绑定(bind)到每个函数调用以保留值。看起来您必须重构,因为该值将作为参数传递,尽管我不确定您的代码是伪代码还是实际代码。

async wait 也可以工作,但需要更长的时间,因为它会在每次 api 调用时暂停执行。

关于javascript - 等待 Node.js 中每次迭代的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246133/

相关文章:

javascript - 如何为后端和前端使用一个包管理器? ( yarn /NPM)

javascript - 改造 for 循环,内部包含异步操作

javascript - JSON stringify 返回 null(C# WebBrowser 控件)

javascript - 将命令的标准输出解析为可用的 javascript 对象的最智能方法是什么

linux - ubuntu 上 ssh 的公钥存储在哪里?

node.js - 一个 Mongoose 集合会减慢另一个集合的速度吗?

javascript - Flot:堆叠条形标签重叠/不显示

javascript - AngularJs ui-router ui-sref 未使用参数从嵌套状态生成 href

node.js - Express JS 路由重定向

node.js - 如何使用 less by "var less = require(' less');"