簡體   English   中英

RxJS:shareReplay如何不存儲空值?

[英]RxJS: How does shareReplay not store null values ?

let btn = document.getElementById('btn')
let input = document.getElementById('input')

let input$ = defer(() => of(input.value)).pipe(
  tap(v => console.log('tap', v)),
  filter(v => v),
  shareReplay(1)
)
let click$ = fromEvent(btn, 'click').pipe(
  switchMap(_ => input$)
)
click$.subscribe(v => console.log(v))

我只想在輸入值不為null時存儲input $。 現在的問題是,如果輸入的值最初為null,則它已經存儲,過濾器無法正常工作。
演示鏈接

您可以嘗試一下,在輸入$之前輸入if-else

let btn = document.getElementById('btn')
let input = document.getElementById('input')
if (input != null){
  let inputValue = input
}

let input$ = defer(() => of(inputValue.value)).pipe(
  tap(v => console.log('tap', v)),
  filter(v => v),
  shareReplay(1)
)
let click$ = fromEvent(btn, 'click').pipe(
  switchMap(_ => input$)
)
click$.subscribe(v => console.log(v))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM