javascript - 异步函数执行顺序

标签 javascript promise

我正在处理一个旧的代码库,遇到这样的情况,我很难理解 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
  })
}

loadLatestDatasetVersionloadCountriesnumberOfRulesetChangesfireImplicitLock - 所有返回 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 需要来自 AB 的数据。

关于javascript - 异步函数执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59067516/

相关文章:

javascript - Ajax:在没有回显的情况下将 PHP 变量发送到 JS?

javascript - Express Nodejs Web 服务中的服务器响应为空

javascript - 使用 React 动态标题标题

javascript - 输入数据列表在动态添加的元素中不起作用

arrays - 处理带有 Promise 的对象数组

javascript - Promise、Promise/A 和 Promise/A+ 之间的区别

javascript - ReactJs Promise + Ajax 返回值

javascript - 从递归函数 catch 中解析一个 promise

JavaScript 使用主题标签更改显示

javascript - Google 图表、更改图表类型以及显示/隐藏列