如何链接rxjs可观察

我来自Angular1,并且像链接诺言一样,我想要有类似的行为。

我在某个类中有一个方法: -

{.........
      doLogin (username, password) {
            .......
            .......
            return this.http.get(api).subscribe(
                    data => {.....}, //enters here
                    err => {.....}
        }

然后我打电话给这个方法: -

 someclass.doLogin(username, password).subscribe(
           data => { }, //Not getting called
            err => { }
 }

正如我在上述代码中提到的注释,订阅没有在调用者类中被调用。

有关如何做到这一点的任何建议?


实际上,您返回subscribe方法的对象。 这是一个订阅,而不是一个可观察的。 因此,您将无法再次订阅返回的对象。

Observable允许基于可观察的运营商构建数据流链。 这取决于你想要做什么。

如果您只是简单地触发某些内容或从服务中设置服务属性,则可以使用do运算符和catch运算符来进行错误处理:

doLogin (username, password) {
  .......
  .......
  return this.http.get(api).do(data => {
    .....
    // Call something imperatively
  })
  .catch(err => {
    .....
    // Eventually if you want to throw the original error
    // return Observable.throw(err);
  });
}

不要忘记包含这些运算符,因为它们不包含在Rxjs中:

import 'rxjs/add/operator/do';
import 'rxjs/add/operator/catch';

或全球(所有运营商):

import 'rxjs/Rx';

查看相关问题:

  • Angular 2,一次性从服务器加载数据并将结果分享给组件的最佳实践
  • Angular 2使用TypeScript错误的HTTP GET http.get(...)。map不是[null]中的函数
  • 链接地址: http://www.djcxy.com/p/90985.html

    上一篇: How to chain rxjs observable

    下一篇: Large files downloaded to Documents and backed up to iCloud