首页 > 解决方案 > 异步函数执行的顺序

问题描述

我正在处理一个旧的代码库,并面临这种情况,在解决承诺后我很难理解执行顺序。我更熟悉 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- 所有返回承诺

我的问题是:在这种情况下,这些承诺之后的所有 then-s 的顺序是什么?

它是否完全按顺序排列,或者不是,我们可以用 say 重构它Promise.all

它甚至需要任何重构吗?

标签: javascriptpromise

解决方案


在这种情况下,这些承诺之后的所有 then-s 的顺序是什么?

当相关的承诺解决时,该then函数将触发。这就是异步代码的意义所在。它会消失,直到它准备好做下一件事。

我们可以用 Promise.all 重构它

在对结果值执行任何操作之前,您可以使用Promise.all等到多个承诺得到解决,但这将是低效的,除非then函数 forC需要来自Aor的数据B


推荐阅读