簡體   English   中英

RXJS - 如果對來自observable的值滿足特定條件,則執行函數

[英]RXJS - Execute function if a specific condition is met on a value from a observable

我已經構建了一個具有自動完成功能的搜索字段。 我正在聽一個可以檢測文本字段變化的observable。

this.term.valueChanges
        .debounceTime(300)
        .distinctUntilChanged()
        .filter(query=>query.toString().length>1)
        .subscribe(query => { 

         //Execute search function and populate dropdown menu

        })

當用戶搜索字符串時,下拉自動完成列表會填充建議。 如果用戶隨后刪除了搜索字符串,我希望刪除下拉列表。 是否有一個RxJS函數,如果從可觀察流生成的值滿足特定條件,則可以在訂閱之前執行函數?

嘗試這樣的事情:

this.term.valueChanges
    .debounce(100)
    .distinctUntilChanged()
    .do(() => /* close list here */)
    .where(val => val.length > 1)
    .select(query => ({ 
        query: query, 
        completions: completions
            .filter(w => w.indexOf(query.toLowerCase()) !== -1)
    }))
    .subscribe(r => {
        /*
         * r.query          contains the current search word
         * r.completions    contain the completions for that word
         */
    });

JSFiddle運行基本示例

暫無
暫無

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

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