2016-12-30 184 views
1

我有一個簡單RxJS5觀察到,像這樣發生之前5個事件:RxJS - 等待繼續

function foo(){ 

return Rx.Observable.create(obs => { 
      obs.next(); 
    }); 

} 

可觀察到的創建,像這樣:

const x = foo(); 

function bar(){ 

    return someObs() 
     .flatMap(() => x.wait(5)) // wait for x to fire 5 times 
     .map(v => ({z:v})); 

} 

我想要做的就是等待在x個可觀察點中發生5個事件,然後繼續。

我不認爲take運營商是我想要的,所以我只是叫運營商「wait

我怎麼能做到這一點與RxJS5?

+0

我試過takeLast,那似乎沒有工作 –

+0

.takeLast(1)可能工作,但它必須與其他東西結合使用,我不知道其他什麼是 –

回答

1

你正在尋找的運營商skip

return someObs() 
    .skip(5) 
    .map(v => ({z:v})); 
+0

啊謝謝!希望這有效 –

0

好了,它看起來像我可以這樣做:

return this.obsEnqueue.take(5).takeLast(1); 

,因爲我最終只能要等待5個事件

如果有更好的方式來做到這一點火後1個事件, ,就一定喜歡聽到它