RxJS 中的时间与缓冲操作
1. RxJS 时间操作的引入
在处理用户输入时,我们可以利用 RxJS 来优化操作。例如,在搜索功能中,为了避免频繁的请求,可以使用 debounceTime
操作符。
以下是一个简单的防抖优化搜索程序:
const notEmpty = input => !!input && input.trim().length > 0;
const sendRequest = function(arr, query) {
return arr.filter(item => {
return query.length > 0 && item.startsWith(query);
});
}
const search$ = Rx.Observable.fromEvent(searchBox, 'keyup')
.debounceTime(1000)
.pluck('target', 'value')
.filter(notEmpty)
.do(query => console.log(`Querying for ${query}...`))
.map(query =>
sendRequest(testData, query))
.subscribe(result => {
if(result.length === 0) {
clearResults(results);
}
else {