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?
答案 0 :(得分:1)
function myRaceFn(promises){
return $q(function(resolve, reject) {
promises.forEach(function(promise) {
promise.then(resolve, reject);
});
});
}
myRaceFn([promise1, promise2]).then(....