Angular7里面实现 debounce search
作者:互联网
项目需求:
全局搜索 + 防抖 提高性能
技术:
[(ngModel)] [(ngModelChange)] Rxjs( Subject)
代码展示:
// html
<input type="text" placeholder="Search" [(ngModel)]="globalSearchContent" (ngModelChange)="globalSearch()">
// xx.component.ts import { Observable, combineLatest, Subject } from 'rxjs'; import { distinctUntilChanged, debounceTime } from 'rxjs/operators'; private searchStream = new Subject<string>(); ngOnInit() {
// 订阅 this.initGlobalSearchSubscription(); } ngOnDestroy() {
// 取消订阅 this.searchStream.unsubscribe(); } private async initGlobalSearchSubscription() { this.projectId = await this.localStorageService.getItem('currentProject'); this.searchStream.pipe( debounceTime(400), distinctUntilChanged()) .subscribe(async(searchContent) => { const searchResult = await this.projectService.globalSearch(this.projectId, searchContent).toPromise(); this.searchMenuList = searchResult.body; }); } private globalSearch() {
// 消息发送 this.searchStream.next(this.globalSearchContent); }
具有防抖和截流的第三方库:
标签:search,debounce,searchResult,防抖,private,searchStream,Angular7,rxjs,Subject 来源: https://www.cnblogs.com/juliazhang/p/11015780.html