【发布时间】:2020-03-01 15:14:00
【问题描述】:
我有一个用例,我想进行异步调用(认为它类似于 ajax),然后在该调用的成功块中,我想使用生成的 id 在循环中进行一系列异步调用家长电话。我的要求是:
- 我应该把显示成功的代码放在哪里?目前我把它放在成功块内的for循环之后,但它有一个问题,它会在子异步调用完成之前被执行,因为for循环不会等待调用并且会立即执行并且代码会去祝酒成功。
- 如果任何一个子调用失败,则不应发生进一步的调用(从效率的角度来看这更重要),而且在这种情况下,我应该能够删除创建的父记录,所以如何也要处理吗? 提前致谢!
示例代码sn-p:
asyncCallA(inputId)
.then(output => {
// inputIdsForChildCalls is the list of inputIds for child async
// calls
inputIdsForChildCalls = [do something with output]
for (let i = 0; i < inputIdsForChildCalls.length; i++) {
asyncCallB(inputIdsForChildCalls[i])
.then(output => {
// do something
})
.catch(error => {
// do something with error
});
}
showSuccessToast("Records created successfully!");
})
.catch(error => {
// do something with error
});
【问题讨论】:
标签: javascript promise callback asynchronous-javascript