当前位置:  开发笔记 > 编程语言 > 正文

Rx.Observable subscribe和forEach有什么区别

如何解决《Rx.Observablesubscribe和forEach有什么区别》经验,为你挑选了1个好方法。

创建像这样的Observable之后

var source = Rx.Observable.create(function(observer) {...});

subscribe有什么区别

source.subscribe(function(x) {});

并为每个人

source.forEach(function(x) {});

shannon.. 61

在ES7规范中,RxJS 5.0遵循(但RxJS 4.0没有),两者不一样.

订阅

public subscribe(observerOrNext: Observer | Function, error: Function, complete: Function): Subscription

Observable.subscribe您可以在那里完成大部分真正的Observable处理.它返回订阅令牌,您可以使用它来取消订阅.当您不知道您订阅的事件/序列的持续时间,或者您是否需要在已知持续时间之前停止收听时,这一点很重要.

的forEach

public forEach(next: Function, PromiseCtor?: PromiseConstructor): Promise

Observable.forEach返回一个承诺,该承诺将在Observable完成或错误时解析或拒绝.它旨在阐明您以更"同步"的方式处理可观察的有界/有限持续时间序列的情况,例如整理所有传入的值,然后通过处理承诺呈现一次.

实际上,无论采用哪种方式,您都可以对每个值以及错误和完成事件进行操作.因此,最显着的功能差异是无法取消承诺.



1> shannon..:

在ES7规范中,RxJS 5.0遵循(但RxJS 4.0没有),两者不一样.

订阅

public subscribe(observerOrNext: Observer | Function, error: Function, complete: Function): Subscription

Observable.subscribe您可以在那里完成大部分真正的Observable处理.它返回订阅令牌,您可以使用它来取消订阅.当您不知道您订阅的事件/序列的持续时间,或者您是否需要在已知持续时间之前停止收听时,这一点很重要.

的forEach

public forEach(next: Function, PromiseCtor?: PromiseConstructor): Promise

Observable.forEach返回一个承诺,该承诺将在Observable完成或错误时解析或拒绝.它旨在阐明您以更"同步"的方式处理可观察的有界/有限持续时间序列的情况,例如整理所有传入的值,然后通过处理承诺呈现一次.

实际上,无论采用哪种方式,您都可以对每个值以及错误和完成事件进行操作.因此,最显着的功能差异是无法取消承诺.


"在ES7规范中,RxJS 5.0遵循(但RxJS 4.0没有),两者并不相同." 注意规格随时间变化非常重要.这是非常烦人的,所以它现在是正确的,也许它不是过去的,也不会是将来的.因此,正确的答案总是指定哪个版本(和这个版本).
@SamiullahKhan:您的问题比是/否需要更复杂。`forEach`在内部订阅,然后返回一个promise;有了这个承诺,您就无法退订。但是,您也没有取消的方法,因此您可能认为它会在没有您干预的情况下完成或失败。可观察库的常规设计期望是,一旦“完成”或“错误”,“退订”会自动发生。因此,如果“ forEach”从概念上为您工作,那么不,您不需要退订。`forEach`不是`Unsubscribe`,而是`Complete`和`Error`。
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有