簡體   English   中英

Rxjs 使用 Observable.from() 字符串並防止 Observable 被多次創建

[英]Rxjs using Observable.from() string and prevent Observable being created many times

我有以下函數,我試圖防止每次調用此函數時都創建 Observable。 基本上,每次用戶在搜索字段中鍵入內容時都會調用此函數。 我知道我可以從事件創建 Observable 為 Observable.fromEvent('button', click) 但這需要我對應用程序進行大量更改。 任何幫助表示贊賞。

function search(input) { 
  Observable.from([input])
  .map(value => value)
  .filter(value => value.length >3)
  .debounceTime(300)
  .distinctUntilChanged()
  .switchMap(searchValue => { 
    //ajax call 
    return Promise.resolve(data) 
  }) 
  .subscribe(data => {
    //Do something with the data
  })
}

如果您想使用 observables,但不想從事件中創建一個,您可以創建一個Subject並可以從您的search調用其next方法:

import { Subject } from 'rxjs/Subject';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/switchMap';

var searchSubject = new Subject();
  .filter(value => value.length > 3)
  .debounceTime(300)
  .distinctUntilChanged()
  .switchMap(searchValue => { 
    // ajax call
    return Promise.resolve(data) 
  }) 
  .subscribe(data => {
    // Do something with the data
  });

function search(input) { 
  searchSubject.next(input);
}

暫無
暫無

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

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