我正在处理一个旧的代码库,遇到这样的情况,我很难理解 promise 解决后的执行顺序。我更熟悉 async/await 语法或 then-s 链,但不熟悉这个。这是片段:
_loadCaseDetail: funciton (arg1, arg2, arg3) {
var oDataModel = this.getOwnerComponent().getModel('db2');
loadLatestDatasetVersion(oDataModel).then(function (datasetVersion) {
// do something
});
loadCountries(oDataModel).then(function (countries) {
// do something
});
numberOfRulesetChanges(oDataModel).then(function (elements) {
// do something
});
return fireImplicitLock(caseUuid).then(function (lockData) {
// do something
}).then(function () {
// do something
})
}
loadLatestDatasetVersion
、loadCountries
、numberOfRulesetChanges
、fireImplicitLock
- 所有返回 promise
我的问题是:在这种情况下,这些 promise 之后的所有 then-s 的顺序是什么?
它是否完全按顺序排列,或者不是,我们可以用 Promise.all
重构它?
它甚至需要任何重构吗?
最佳答案
What would be the order in this case for all then-s that come after these promises?
then
函数将在关联的 promise 解析时触发。这就是异步代码的意义所在。它会消失,直到它准备好做下一件事。
we can refactor it with say Promise.all
您可以使用 Promise.all
来等待多个 promise 被解决,然后再对结果值执行任何操作,但这将是低效的,除非 then
函数用于 C
需要来自 A
或 B
的数据。
关于javascript - 异步函数执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59067516/