javascript - 如何在 angularJS 中观看 promise ?

标签 javascript angularjs angular-promise

目标:$scope.finalArray = $scope.arrayFromPromise2.concat($scope.arrayFromPromise1);

第一种方法

 $scope.arrayFromPromise1 = [];
 $scope.arrayFromPromise2 = [];

 someService.query1()
   .then(function(success){
      $scope.arrayFromPromise1 = success.data;
      return someService.query2();
   })
   .then(function(success){
      $scope.arrayFromPromise2 = success.data;
      $scope.finalArray =  $scope.arrayFromPromise2.concat($scope.arrayFromPromise1);
   });

第二种方法

$scope.arrayFromPromise1 = [];
$scope.arrayFromPromise2 = [];

function getData1(){
  someService.query1().then(function(success){
    $scope.arrayFromPromise1 = success.data
  });
}

function getData2(){
  someService.query2().then(function(success){
   $scope.arrayFromPromise2 = success.data;

   $scope.finalArray =  $scope.arrayFromPromise2.concat($scope.arrayFromPromise1);
  });
}

getData1();
getData2();

第二种方法 将根据 getData1 的第一个 promise 完成的时间抛出错误。 可以在 getData2 中使用 $scope.$watch 以便我可以观察 $scope.arrayFromPromise1 的变化吗?任何与链接 promise 不同的提示?

最佳答案

使用 $q.all 等待一堆 promise 完成然后根据信息采取行动是一项简单的任务。方法。

//We are returned a promise with a .then block to extract the data
//this is making a certain assumption that we are using the $http service
//where as using another such as $resource or restangular will "unwrap"
//the data for us...

var query1Promise = someService.query1().then(function(res) { return res.data; });
var query2Promise = someService.query2().then(function(res) { return res.data; });

$q.all([query1Promise, query2Promise])
    .then(function(promises) {
         $scope.finalArray = promises[0].concat(promises[1]);
    });

关于javascript - 如何在 angularJS 中观看 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093926/

相关文章:

javascript - Angular Protractor 中的错误处理

javascript - 使用 angularjs 和 PHP (PDO) 连接 MySQL

javascript - $q : default reject handler

javascript - 使用 .catch() 处理 $routeChangeError

javascript - 向 md-tabs 添加 'Add/Remove-Tab' 功能

javascript - 如何等待函数在 Angular 2 中完成执行?

javascript - 从 Sequelize.js "query"(MySQL) 获取最后插入的 id

javascript - 将高度缩小到内容大小

javascript - 将属性指令传递给元素指令

javascript - 为什么在 Javascript 中使用闭包时,鼠标悬停事件不起作用?