Rx에서 scan과 Reduce의 차이
TL;DR
reduce
complete를 진행하기 전에 값을 되돌려주지 않음scan
next로 하나씩 되돌아오는 값scan
사용하세요다른 언어의 Reduce
# in Ruby
# reduceはinjectのalias
(0..10).inject { |sum, n| sum + n }
// in JavaScript (ECMAScript 2015)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].reduce((sum, n) -> sum + n)
Reduce operator
apply a function to each item emitted by an Observable, sequentially, and emit the final value
ReactiveX - Reduce operator
emit the final value에서 보듯이 결과를 accumultor에 저장하고 마지막
onComplete()
값을 되돌려줍니다.데이터가 모두 유통되기 전까지는 값이 다음 방법으로 흘러가지 않는다는 것이다.
Scan operator
apply a function to each item emitted by an Observable, sequentially, and emit each successive value
ReactiveX - Scan operator
emiteach successivevalue처럼 accumulator의 값이 하나하나 흘러나온다.
데이터 하나만 먹으면 토한다는 얘기다.
언제 주의하면 좋을까
이전 결과를 이용하여 값을 변환하고 그 결과를 차례로 이용할 때(센서 값에 low pass filter 같은 것을 곱했을 때)
onNext()
를 사용하면 센서 값의 읽기를 멈추지 않으면 값이 돌아오지 않습니다.그럼 울분을 참으며 쓰세요.References
Reference
이 문제에 관하여(Rx에서 scan과 Reduce의 차이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/izumin5210/items/952a23bf065648feabb7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)