你如何使用 RxJS v5 返回 new Observable(function(observer) ...?

Posted

技术标签:

【中文标题】你如何使用 RxJS v5 返回 new Observable(function(observer) ...?【英文标题】:How do you return new Observable(function(observer) ... with RxJS v5?你如何使用 RxJS v5 返回 new Observable(function(observer) ...? 【发布时间】:2016-03-04 16:13:28 【问题描述】:

我正在尝试用 Observables 替换我的函数返回的所有承诺。从这篇文章中,我了解到我不应该再使用“new Observable”Observable.forkJoin and array argument

实现异步等待的 RxJS v5 语法是什么?

thirdFunction() 

    let _self = this;

    return new Observable(function(observer) 

        ...

        observer.next( responseargs );
        observer.complete();
    );

非常感谢您提供的帮助。

【问题讨论】:

我猜他的意思是reactivex.io/RxJS中列出的创建函数,比如Observable.of(...) 特别是一个返回 Observable 的函数。当我转到您发布的链接并单击创建时,以下页面非常混乱。您能否提供一个小提琴或 plknr 来演示一个使用 RxJs v5 返回 Observable 的函数?在 v4 中,我让它与新的 Observable 一起工作,但我不知道与 v5 的等价物 【参考方案1】:

有一组方法可以为不同的用例创建可观察对象:

of - 创建一个 observable 并使用提供的值直接触发一个事件 超时 - 创建一个可在一段时间后触发事件的可观察对象 interval - 创建一个可在一段时间后重复触发的 observable

此链接按类别提供了它们的列表:

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/categories.md

【讨论】:

如果调用者只需要订阅,我应该使用哪一个?在函数定义中,我应该将 observer.next( ... ) 和 observer.complete() 放在哪里?我的用例是我希望调用者调用我的函数并等到该函数完成,这样,当它完成时,调用者可以运行在订阅(...)中找到的代码块..基本上我正在尝试像我们使用 Angular 1 一样复制返回的 $q 您的函数如何通知其处理已结束? 目前,使用 RxJS v4 new Observable,它通过调用 observer.next( responseargs ); 来通知它的处理已经完成;观察者.完成();但我发现这个约定与 forkJoin 不兼容,所以我试图找到 RxJS v5 的方式来做到这一点 “不兼容”是什么意思?这是一个描述如何使用 Observable.forkJoin 的原始 observable 的 plunkr:plnkr.co/edit/XqHYTqL2BadyVltajVhs?p=preview。 thnx - 我需要的是:return Observable.create((observer) => ...observer.next("test");observer.complete();

以上是关于你如何使用 RxJS v5 返回 new Observable(function(observer) ...?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅提取 json 的某些属性,使用 rxjs 作为可观察对象返回

如何从 http.request() 中正确捕获异常?

如何让 rxjs 暂停/恢复?

在 Angular 和 rxjs 中重新连接 websocket?

材料 ui 'new' v5.0.0 injectionFirst 无法设置特异性

[RxJS] Reactive Programming - New requests from refresh clicks -- merge()