我正在开发一个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/