RXJS 和 Angular 1

RXJS and Angular 1

我正在尝试使用 RxJS 和 Angular 1。我 运行 遇到无法调用 .done().fail() 的问题或 .always() 根据 $http 请求。是否可以在 Angular 1 中将 RxJS 与 $http 服务一起使用?

到目前为止,这是我设置可观察对象的方式:

angular.module('rxExampleApp')
  .controller('Step3Ctrl', function ($http) {
    var vm = this;
    vm.requestStream = Rx.Observable.just('https://api.github.com/users');

    vm.requestStream.subscribe(function (requestUrl) {
      // execute the request

      vm.responseStream = Rx.Observable.create(function (observer) {
        $http.get(requestUrl)
          .done(function (response) {
            observer.onNext(response);
          })
          .fail(function (jqXHR, status, error) {
            observer.onError(error);
          })
          .always(function () {
            observer.onCompleted();
          });
      });
    });

    vm.responseStream.subscribe(function (response) {
      console.log('TEST RESPONSE: ', response);
    });
  });

但我 运行 遇到一个错误,其中 $http.get.done 不是一个函数。在 Angular 1.4 中使用 RxJS 可以实现我想要实现的目标吗?

donefailalways 这些方法在 jQuery Ajax 上可用,但在 angular [=15= 上可用] 方法。

$http.get 没有 return 承诺,您可以对它使用 .then 功能。所以你可以放置 successerror & completed 回调。

代码

$http.get(requestUrl)
 .then(function (response) { //success function
        observer.onNext(response);
  }, function (error) { //error function
     observer.onError(error);
  }, function () { //completed callback
     observer.onCompleted();
  }
);