RxJS 與時間相關的 Operators 比較 有事件資料出現後,才會觸發 timer 並依據條件 emit 事件資料 debounceTime *----@----------*----@ ^ * * throttleTime *---*---*---@-----*----*-@ ^ ^ * * auditTime *---*---*---@-----*----*-@ ^ ^ * * 一開始就會觸發 timer 並依據條件 emit 事件資料 bufferTime --*---*---@----------@---***---@ [*,*] [ ] [*,*,*] windowTime --*---*---@----------@---***---@ Ob(**) Ob() Ob(***) sampleTime --*---*---@----------@---***---@ ^ ^ * * 筆記心得 debounceTime:從最後一次 emit 後安靜一段時間(無發生任何 emit),才送出最後一次發生的值 throttleTime:從第一次 emit 發生後送出,並忽略設定時間(ms)內的其他 emit auditTime:從第一次 emit 起一段時間後(ms),送出這段時間內最後一次 emit bufferTime:收集一段時間(ms)內的 emit 後,以陣列型式 emit 收集到的結果 windowTime:收集一段時間(ms)內的 emit 後,以 Observable 型式 emit 收集到的結果 sampleTime:固定時間(ms)內送出最後一次 emit,如果時間內沒有任何 emit,則不會 emit 範例程式碼 https://stackblitz.com/edit/typescript-g6f86y 延伸閱讀 https://blog.kevinyang.net/2018/08/28/rxjs-custom-operator/