AngularJS:旧角度版本的$ q.race()

时间:2016-09-14 11:31:52

标签: javascript angularjs promise angular-promise

Angular 1.5.8实现了一个$q.race()方法,该方法接受一系列promise并返回一个promise,该promise使用第一个已解析的promise的值进行解析。

但是我现在仍然坚持使用角度1.4,需要某种功能,例如$q.any$q.race方法。

目前我使用.then()内的标记来记住"记住"承诺的状态显然不理想。

var resolvedPromise = null;

promise1.then(function(data){
  if(!resolvedPromise === 'promise2'){
    resolvedPromise = 'promise1';
    successcallback(data)
  }
})

promise2.then(function(data){
  if(!resolvedPromise === 'promise1'){
    resolvedPromise = 'promise2';
    successcallback(data)
  }
})

问题

我一次只需要这两个承诺:

myRaceFkt(p1,p2)
  .then(successcallback)

是否有更优雅的解决方案无法访问改进的$q - api 1.5.8?

1 个答案:

答案 0 :(得分:1)

function myRaceFn(promises){
   return $q(function(resolve, reject) { 
     promises.forEach(function(promise) {
       promise.then(resolve, reject);
     });
   });
}
myRaceFn([promise1, promise2]).then(....