我希望在所有console statement
执行后执行最后for loop
,但是当控件输入executes immediately
语句时,该控制台语句else
,请帮我解决此问题
if (false) {
//
} else {
//pushing the scenarios object id from project table to scenarios array
// function async(project) {
// Promise((resolve, reject) => {
for (i = 0; i < projectToBeDeleted[0].scenarios.length; i++) {
scenarios.push(projectToBeDeleted[0].scenarios[i])
}
//iterating the scenario table to get the child scenarios from all matching scenarios
for (i = 0; i < scenarios.length; i++) {
query = { "_id": scenarios[i] }
Scenario.getScenarios(query)
.then((scenariosResponse) => {
for (j = 0; j < scenariosResponse[0].childScenario.length; j++) {
scenarios.push(scenariosResponse[0].childScenario[j])
}
})
.catch((error) => {
res.status(400).send({
message: error.stack
})
})
}
// })
console.log("sync", scenarios)
}
答案 0 :(得分:1)
您可能想要使用Promise.all([]).then()
。
请参阅the docs。
编辑:您的具体问题的示例
for (i = 0; i < projectToBeDeleted[0].scenarios.length; i++) {
scenarios.push(projectToBeDeleted[0].scenarios[i]);
}
const promises = [];
for (i = 0; i < scenarios.length; i++) {
const query = { "_id": scenarios[i] }
const promise = Scenario.getScenarios(query)
.then((scenariosResponse) => {
for (j = 0; j < scenariosResponse[0].childScenario.length; j++) {
scenarios.push(scenariosResponse[0].childScenario[j])
}
})
.catch((error) => {
res.status(400)
.send({
message: error.stack
})
})
promises.push(promise);
}
Promise.all(promises).then(() => {
console.log("sync", scenarios)
})