2016-12-30 2 views
1

У меня есть простой RxJS5 наблюдаемым как так:RxJS - Подождите, пока 5 событий не произойдет, прежде чем продолжить

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})); 

} 

То, что я хочу сделать, это ждать для 5 событий в x, наблюдаемых для стрельбы, прежде чем продолжить.

Я не думаю, что оператор take является то, что я хочу, так что я только что назвал оператор «wait»

Как я могу сделать это с RxJS5?

+0

Я попробовал takeLast, и это, похоже, не работает –

+0

.takeLast (1) может работать, но он должен быть в сочетании с чем-то другим, и я не знаю, что это такое, что-то еще –

ответ

1

оператор вы ищете skip

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

ahh спасибо! надеюсь, что это работает –

0

Хорошо, это выглядит, как я могу это сделать:

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

, потому что в конечном счете только хотят уволить 1 событие, прождав 5 событий

Если есть лучший способ сделать это , конечно хотелось бы услышать об этом

 Смежные вопросы

  • Нет связанных вопросов^_^