如何在一个 Observable 上使用多个 debounceTime?
How can I use multiple debounceTime on one Observable?
我有一个输入 html 元素并使用 Observables 执行基本的提前搜索功能:
代码:
@Output() keywordChange = new EventEmitter();
this.keyword$ = Observable.fromEvent(myInput, 'keyup');
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword));
所以基本上我会捕获每次键入之间至少间隔 200 毫秒的任何关键字。
现在我想将用户正在搜索的任何内容保存在 cookie 中,以便向他们展示 "Your latest searches" 但我想在保存之前等待 3000 毫秒
输入的值。
我知道下面的代码不起作用,但只是为了说明,我想实现与此类似的东西:
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword))
.debounceTime(3000)
.subscribe(keyword => addKeyWordToLatestSearches(keyword));
这是否可能以某种方式链接运算符以使用不同的 debounceTimes 执行多项操作?
您可能希望 share
初始订阅能够以两种独立的方式处理发出的数据吗?由于您不想在原始来源上订阅两次,您可以使用 RxJS 的 share
operator。
const keyupValue$ = this.keyword$
.map((event: any) => event.target.value)
.share();
keyupValue$
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword))
keyupValue$
.debounceTime(3000)
.subscribe(keyword => addKeyWordToLatestSearches(keyword));
我有一个输入 html 元素并使用 Observables 执行基本的提前搜索功能:
代码:
@Output() keywordChange = new EventEmitter();
this.keyword$ = Observable.fromEvent(myInput, 'keyup');
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword));
所以基本上我会捕获每次键入之间至少间隔 200 毫秒的任何关键字。
现在我想将用户正在搜索的任何内容保存在 cookie 中,以便向他们展示 "Your latest searches" 但我想在保存之前等待 3000 毫秒 输入的值。
我知道下面的代码不起作用,但只是为了说明,我想实现与此类似的东西:
this.keyword$
.map((event: any) => event.target.value)
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword))
.debounceTime(3000)
.subscribe(keyword => addKeyWordToLatestSearches(keyword));
这是否可能以某种方式链接运算符以使用不同的 debounceTimes 执行多项操作?
您可能希望 share
初始订阅能够以两种独立的方式处理发出的数据吗?由于您不想在原始来源上订阅两次,您可以使用 RxJS 的 share
operator。
const keyupValue$ = this.keyword$
.map((event: any) => event.target.value)
.share();
keyupValue$
.debounceTime(200)
.subscribe(keyword => this.keywordChange.emit(keyword))
keyupValue$
.debounceTime(3000)
.subscribe(keyword => addKeyWordToLatestSearches(keyword));