angular - 如何在 Angular 5 的去抖动时间上达到组件的功能?

标签 angular angular5 observable debouncing

我如何以 Angular 设置组件功能的去抖动时间。 实际上我从 selectTableRow() 方法中点击了一个 api。当我选择 tr 然后点击 api 但是当我选择多个 tr 时,多个请求将发送到服务器。

我希望当我快速选择多个表行时只发送一个请求,例如(自动完成搜索)。

HTML

<tr *ngFor="let data of tableData"
    (click)="selectTableRows($event, data)"
    [ngClass]="{'row-highlight': isRowSelected(data.id)}">
    <td>
        <span>{{data.name}}</span>
    </td>
</tr>

方法

selectTableRows(event, rowData) {
    //Hit api from here
}

最佳答案

这是不使用任何库的简单答案。

//define variable with null value
currentTimeout: any = null;

selectTableRows(event, rowData) {

    //put your logic here

    this.cancelTimeout();
    this.currentTimeout = setTimeout(() => {

        // call api from here
    }, 1000);

}

cancelTimeout(): void {
    clearTimeout(this.currentTimeout);
    this.currentTimeout = undefined;
}

你可以试试这个。如果您有任何疑问,请告诉我。

关于angular - 如何在 Angular 5 的去抖动时间上达到组件的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52216469/

相关文章:

javascript - Angular subject() 可观察,在不同的组件中不起作用

javascript - 如何使用 Observable 缓冲字符串流?

angular - 对包含 ngbTypeahead 的组件进行单元测试

angular - 浏览器中文件下载进度 : Angular 5

angular - 如何在angular2中的每个路由更改上调用一个函数

javascript - 在 json_to_sheet 之后使用 XLSX js 对列进行排序和过滤

javascript - DOM异常: String contains an invalid character

angular - 映射http错误响应

javascript - Angular 2即使没有导航到它也能保持路线活跃

arrays - Angular 将 json 转换为对象数组