RxJS: auditTime と sampleTime の違い
auditTimeは特定の時間が経過してから最新の値を発行する一方、sampleTimeは指定した間隔で最新値を発行します。
- auditTimeは、指定された時間間隔で元のObservableが発する値を無視し、その時間間隔内の最後の値のみに関心を示します。一定時間経過後、最後の値を発行します。つまり、一定間隔ごとに最新の値を発行します。
- 指定時間間隔で元の Observable から放出された値をサンプリングします。この期間の終了時に、この期間内で最新の値が放出されます。言い換えると、最新の値を定期的に放出します。
例を挙げると
import { interval } from 'rxjs';
import { auditTime, sampleTime } from 'rxjs/operators';
const source$ = interval(500); // 每500毫秒发出一个值
source$
.pipe(auditTime(2000))
.subscribe(value => console.log(`auditTime: ${value}`));
source$
.pipe(sampleTime(2000))
.subscribe(value => console.log(`sampleTime: ${value}`));
前記コードでは、operatorであるauditTime(2000)は、2000ミリ秒ごとに送信された値を無視し、その間最後の値のみ送信します。一方で、operatorであるsampleTime(2000)は、2000ミリ秒ごとに送信された値をサンプリングし、その間の最新の値を送信します。
翻訳は需要が高い
auditTime: 3
auditTime: 7
auditTime: 11
sampleTime: 9
sampleTime: 19
sampleTime: 29
出力結果より、auditTime は 2 秒ごとに定期的に値を返し、sampleTime は 2 秒ごとの最新の値を返すことが分かる