如何在RxJS中完成Observable [英] How can I complete Observable in RxJS

查看:122
本文介绍了如何在RxJS中完成Observable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我们有一个 Observable

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

如何才能完成(什么会触发 onComplete所有订阅观察员事件?

How can I make it Complete (what will trigger onComplete event for all subscribed Observers) ?

推荐答案

在目前的表格中,你不能。您的observable源自一个未完成的源,因此它本身无法完成。您可以做的是使用完成条件扩展此源。这可以像:

In this present form, you cannot. Your observable is derived from a source which does not complete so it cannot itself complete. What you can do is extend this source with a completing condition. This would work like :

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

如果你想结束 observable ,你做结束$ .onNext(你想要的任何东西); 。在这种情况下,结束事件由您生成。如果这是生成该事件的另一个源(按键等),那么您可以直接将从该源派生的observable作为 takeUntil 的参数。

When you want to end observable, you do end$.onNext("anything you want here");. That is in the case the ending event is generated by you. If this is another source generating that event (keypress, etc.) then you can directly put an observable derived from that source as an argument of takeUntil.

文档:

  • http://reactivex.io/documentation/operators/takeuntil.html
  • https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/takeuntil.md

这篇关于如何在RxJS中完成Observable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆