• 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); }

    具体实例

    具有防抖和截流的第三方库:

    lodash

    underscore

    rxjs

    个人对截流和防抖的理解:

    防抖:当连续操作停止的时间超过规定的等待时间后,回调函数才会被调用。比如:停止输入后一段时间,回调函数才会触发。

    截流:在连续操作的这段时间内,回调函数在规定的时间段内才会被调用。比如:连续拖拽,回调函数只会每个一段时间触发一次

    每天一点点
  • 相关阅读:
    intellij idea 注册码
    python 爬虫
    打油诗
    vux 新建移动app步骤
    ubuntu支持中文配置
    pandas DataFrame 交集并集补集
    API精准定位IP地址
    Python获取本地位置和天气
    nginx配置uwsgi
    django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
  • 原文地址:https://www.cnblogs.com/juliazhang/p/11015780.html
Copyright © 2020-2023  润新知