【问题标题】:I need help understanding RxJx subscribe syntax我需要帮助理解 RxJx 订阅语法
【发布时间】:2016-12-14 15:01:11
【问题描述】:

这就是我现在正在做的,不知道有没有更好的方法

this.dataService.subscribe(
    data => this.data = data,
    error => alert('Something went wrong'),
    () => this.doSomethingOnCompletion());

但是,如果我没有捕获数据,我可能只更改三个函数中的第一个:

() => null,

documentation for rxjs 4.x 对我来说并没有很好地回答这个问题。 Version 5.x 解释得更少。

那么,判决结果是什么?当我只需要触发某些事情发生时,以下内容是否错误?

this.dataService.subscribe(
    () => null,
    error => alert('Boom.'),
    () => this.doSomethingOnCompletion());

如果我不需要在完成时做某事,我会留下那部分。如果我只想检查错误而不想检查其他内容怎么办?

【问题讨论】:

    标签: typescript rxjs rxjs5


    【解决方案1】:

    RxJS 4 如果你只需要errors 那么你可以使用subscribeOnError 方法来处理错误。

    你也可以使用 subscribe 方法,但是你只需要为你不想要的处理程序传递一个空值,你不必传递你自己的 noop。

    this.dataService.subscribe(
        null,
        error => alert('Something went wrong'));
    

    RxJS 5 你可以传递一个所谓的PartialObserver

    this.dataService.subscribe({
      error: error => alert('Boom.'), 
      complete: () => this.doSomethingOnCompletion()
    })
    

    【讨论】:

    • 这个 PartialObserver 正是我想要的,虽然,老实说,通过查看源代码我不明白 Observer.ts 将如何理解哪些键:值对到哪个界面。今天早上我会玩这个。 :)
    • 所以看起来我做事的方式还不错。这就像调用带有可选参数的函数一样。如果您想要第二个或第三个可选参数,则必须将 null 传递给第一个参数。就 Angular 2 而言,我们从 http 服务返回的 Observable 并不典型,因此它本身并没有真正采用 PartialObserver 方式。感谢您的指导!
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2018-06-08
    相关资源
    最近更新 更多