angular2 rxjs可观察的forkjoin

kab*_*bus 17 observable rxjs typescript angular

即使其中一个请求失败,是否可以继续forkjoin http.get请求.

我期待在angular2中使用$ q.allSettled的类似功能.

参见示例:http://jsfiddle.net/Zenuka/pHEf9/

angular.module('qAllSettled', []).config(function($provide) {
  $provide.decorator('$q', function($delegate) {
    var $q = $delegate;
    $q.allSettled = function(promises) {
      return $q.all(promises.map(function(promise) {
        return promise.then(function(value) {
          return { state: 'fulfilled', value: value };
        }, function(reason) {
          return { state: 'rejected', reason: reason };
        });
      }));
    };
    return $q;
  });
});
Run Code Online (Sandbox Code Playgroud)

KAB

Thi*_*ier 31

您可以利用catch每个observable 的运算符来拦截错误,并在这种情况下返回另一个observable.

这是一个示例:

return Observable.forkJoin(
  this.http.get('/some-url')
         .map((res:Response) => res.json())
         .catch(res:Response => Observable.of({}),
  this.http.get('/some-other-url')
         .map((res:Response) => res.json())
         .catch(res:Response => Observable.of({}),
);
Run Code Online (Sandbox Code Playgroud)