javascript - 如何在 JavaScript 中先执行一个 Promise,然后再执行下一个语句

标签 javascript angularjs angular-promise

我想要做的是等待第二个 promise 完成,连接数据,即data = data.concat(items),然后增加计数,使循环运行指定的次数。全部都是用 AngularJS 编写的。

DataService.getSomeData().then(function(data) {
  let count = 1;
  while (count < 3) {
    if (someCondition) { // It evaluates to true

      // Second Promise
      DataService.getUserData().then(function(items) {
        data = data.concat(items); // --------> this should run before incrementing the count
      });

      count++;
    }
    $scope.myData = data;
  }
});

谢谢!

最佳答案

保持 API 返回 promise - 它是最容易处理和最可预测的......

  DataService.getSomeData()
    .then(someData => {
        let count = 1;
        const promises = [];

        while (count < 3) {
            if (someCondition) { // It evaluates to true
                promises.push(DataService.getUserData());
                count++;
            }
        }

        return $q.all(promises)
            .then(data => data.reduce((memo, data) => memo.concat(data), someData));
    })
    .then(data => $scope.myData = data);

关于javascript - 如何在 JavaScript 中先执行一个 Promise,然后再执行下一个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48112101/

相关文章:

javascript - Chrome 上的 Angular 加载空白屏幕,控制台中没有错误

angular - 如何使用 RXJS 和 Angular 13 处理 .toPromise() 弃用

javascript - 为复杂的 Firebase 查询提供 Angular 服务

javascript - 网站上的谷歌广告溢出到米色背景

javascript - .scrollTop() 条件语句在悬停时中断

javascript - 如何在 Angular Controller 中过滤自定义数据

javascript - 当您在 Angular ui-router 中处于相同状态时重新加载状态

javascript - 探索/浏览 promise 链

Javascript,从原型(prototype)函数自己的字段获取 "this"

javascript - React Native 目前是否支持访问用户的地址簿