簡體   English   中英

如何使用rx.js訂閱諾言?

[英]How can I subscribe to a promise using rx.js?

我有一個返回諾言的函數。
我想使用rx.js訂閱該諾言,以使該函數的調用將向所有訂閱者推送通知。

這是我所擁有的:

var subject = new Rx.Subject();

var subscription = subject.subscribe(
    function (x) { console.log('onNext: ' + x); },
    function (e) { console.log('onError: ' + e.message); },
    function () { console.log('onCompleted'); }
);

//here I want to push first notification
subject.fromPromise(functionThatReturnsPromise()); 

//some code

//here I want to push second notification
subject.fromPromise(functionThatReturnsPromise()); 

結果,訂戶僅收到一個通知。

怎么解決呢?

var subject = new Rx.Subject();

var subscription = subject.mergeAll().subscribe(
    function (x) { console.log('onNext: ' + x); },
    function (e) { console.log('onError: ' + e.message); },
    function () { console.log('onCompleted'); }
);

subject.onNext(Rx.Observable.fromPromise(functionThatReturnsPromise()));

//some code

subject.onNext(Rx.Observable.fromPromise(functionThatReturnsPromise()));

現在,這里的主題是元流(可觀察的可觀察對象)。 在訂閱它之前,我們通過調用mergeAll()將它“扁平化”。 onNext()我們向對象提供了Observables,這就是使它成為元流的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM