2016-10-28 3 views
1

스트림에서 항목을 n 초 동안 건너 뛴 다음 스트림에서 전달 된 마지막 항목을 가져 오려고합니다. 이것은 내가 지금까지 무엇을 가지고 :X 초 후에 만 ​​마지막 항목 가져 오기

const delayedState$ = state$.delay(1000); 
 
state$.buffer(
 
    delayedState$ 
 
).filter(
 
    (buffer) => buffer && buffer.length > 0 
 
).publishReplay(1).refCount().map(
 
    (buffer) => buffer.slice(-1).pop() 
 
).subscribe((state) => { 
 
    saveState({ 
 
    buttonCount: state.buttonCount 
 
    }); 
 
})

을하지만이 지저분한 것, 그리고 스트림이 매우 짧은 연속으로 많은 변화가있을 때 작동하지 않습니다. 나는 기본적으로 이것을 따라하려고 노력하고있다 : https://github.com/tayiorbeii/egghead.io_idiomatic_redux_course_notes/blob/master/03-Persisting_the_State_to_the_Local_Storage.md

내 제약 조건; 이 n 초 후 마지막 항목이되어야합니다. 이 아닌 첫 번째 항목은입니다. 그런 다음 N 초 기다립니다.

답변

1

이 데모에서는 source Observable이 10 개의 값을 그들 사이에 1 초 지연시켜 방출합니다.

let source = Observable.interval(1000).take(10); 

source.skipUntil(Observable.of(true).delay(5000)) 
    .takeLast(1) 
    .subscribe(val => console.log(val)); 

:

모든 값은 5 초 지연 내부 관찰 가능한이 값을 방출 한 후 마지막 값 (마지막 값이 0에서 9interval() 때문에 카운트 값이다) 가입자에게 전달 될 때까지 무시됩니다 실시간 데모보기 : http://plnkr.co/edit/zklJWnnKzHu3smNmr0T2?p=preview

관련 문제