2016-12-30 149 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个事件, ,就一定喜欢听到它