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

如何在RxJS中完成Observable

如何解决《如何在RxJS中完成Observable》经验,为你挑选了1个好方法。

假设我们有一个Observable:

var observable = Rx.Observable
    .fromEvent(document.getElementById('emitter'), 'click');

如何使其完成(什么将触发所有订阅的观察者的onComplete事件)?



1> user3743222..:

在目前的形式,你不能.您的observable源自一个未完成的源,因此它本身无法完成.您可以做的是使用完成条件扩展此源.这将工作如下:

var end$ = new Rx.Subject();
var observable = Rx.Observable
    .fromEvent(document.getElementById('emitter'), 'click')
    .takeUntil(end$);

当你想要结束时observable,你做到了end$.onNext("anything you want here");.在这种情况下,结束事件由您生成.如果这是生成该事件的另一个源(按键等),那么您可以直接将从该源派生的observable作为参数takeUntil.

文档:

http://reactivex.io/documentation/operators/takeuntil.html

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/takeuntil.md


?? 我不跟着你。这是什么'?无论如何,将向所有观察者触发“ onCompleted”处理程序,这就是您的要求。关于内存泄漏,当最后一个观察者从`fromEvent`创建的可观察对象中退订时,创建的事件侦听器将被删除。
推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有