Javascript 如何保证NodeJS中的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

如何停止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!!!",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});
});