【问题标题】:RXJS and Angular 1RXJS 和 Angular 1
【发布时间】:2016-02-15 17:28:09
【问题描述】:

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

到目前为止,这就是我设置 observable 的方式:

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 实现什么?

【问题讨论】:

    标签: javascript angularjs rxjs reactivex


    【解决方案1】:

    done, fail & always 这些方法在jQuery Ajax 上可用,而不是在角度$http 方法上可用。

    $http.get 不返回一个承诺,你可以在它上面使用.then 函数。所以你可以放置success, error & completed 回调。

    代码

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

    【讨论】:

    • 太棒了。谢谢你。代表我犯了一个愚蠢的错误。
    • @JordanMcRae np。很高兴帮助你。谢谢
    猜你喜欢
    • 2023-03-17
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2016-02-11
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多