Javascript 如何保证NodeJS中的For循环
如何停止nodeJS执行在for循环外部编写的语句,直到for循环完成Javascript 如何保证NodeJS中的For循环,javascript,node.js,mongodb,reactjs,Javascript,Node.js,Mongodb,Reactjs,如何停止nodeJS执行在for循环外部编写的语句,直到for循环完成 for(i=0;i<=countFromRequest;i++) { REQUEST TO MODEL => then getting result here (its an object) licensesArray.push(obj.key); } res.status(200).send({info:"Done Releasing Bulk Licenses!!!",licensesArra
for(i=0;i<=countFromRequest;i++)
{
REQUEST TO MODEL => then getting result here (its an object)
licensesArray.push(obj.key);
}
res.status(200).send({info:"Done Releasing Bulk Licenses!!!",licensesArray:licensesArray})
for(i=0;然后我在这里得到结果(它是一个对象)
许可证。推送(对象键);
}
res.status(200).send({info:“完成批量许可证的发布!!!”,licensesArray:licensesArray})
问题是For循环之后的语句是在For循环之前执行的,因此当我收到API数据时,licensesArray是空的
你知道怎么做吗
将感谢您。使用异步/await:
const licensesArray = [];
for(let i = 0; i <= countFromRequest; i++) {
const obj = await requestModel(); // wait for model and get resolved value
licensesArray.push(obj.key);
}
res.status(200).send({licensesArray});
如果您的环境支持,我会选择async/await,因为它使事情更易于阅读,并允许您以同步思维进行编程(在后台,它仍然是异步的)。如果您的环境不支持它,您可以选择Promise.all
方法
进一步阅读:
等待
对模型的请求。非常完美..我得到了。
const pArr = [];
const licensesArray = [];
for(let i = 0; i <= countFromRequest; i++) {
pArr.push(requestModel().then(obj => {
licensesArray.push(obj.key);
}));
}
Promise.all(pArr).then(() => { // wait for all promises to resolve
res.status(200).send({licensesArray});
});