Rxjs 对角函数内的函数进行去噪

Rxjs 对角函数内的函数进行去噪,rxjs,lodash,angular8,debounce,rxjs-pipeable-operators,Rxjs,Lodash,Angular8,Debounce,Rxjs Pipeable Operators,我想为函数中的一个参数添加debounce 我有这个问题,因为角度去盎司只适用于管道和可观察的,所以我用洛达斯去盎司代替 每当clarity datagrid表刷新时,它将调用onRefreshTable函数并传递具有表过滤器和排序状态的事件对象 由于RefreshtTable()将调用API,这需要较长的时间,因此我希望最小化API调用 有时,使用同一个参数或不同的参数多次调用表刷新。如果参数不同,最后一个表刷新调用将包含传递给API所需的所有参数 我的atttest在代码中没有错误,但它仍然

我想为函数中的一个参数添加debounce

我有这个问题,因为角度去盎司只适用于管道和可观察的,所以我用洛达斯去盎司代替

每当clarity datagrid表刷新时,它将调用onRefreshTable函数并传递具有表过滤器和排序状态的事件对象

由于RefreshtTable()将调用API,这需要较长的时间,因此我希望最小化API调用

有时,使用同一个参数或不同的参数多次调用表刷新。如果参数不同,最后一个表刷新调用将包含传递给API所需的所有参数

我的atttest在代码中没有错误,但它仍然在1秒后使用相同的参数调用函数几次

import * as _ from lodash;
onRefreshTable(event: ClrDatagridStateInterface<any>) {
        _.debounce((event) => {
            this.refreshTable(event)
        }, 1000);     
}
refreshTable(event) {
   // save state to the rxjs store 
   // call API which is expensive
}
从lodash导入*as uu;
onRefreshTable(事件:ClrDatagridStateInterface){
_.debounce((事件)=>{
此.刷新表(事件)
}, 1000);     
}
刷新表(事件){
//将状态保存到rxjs存储
//调用价格昂贵的API
}
我正在考虑使用distinctUntilChanged,但是它在这种情况下似乎不起作用,因为函数中的参数是不可见的


也许我应该使用..cloneDeep来比较以前的参数和当前的参数?

您可以使用
distinctUntilChanged(..isEqual)
,如果您有一个参考值要比较,那么像这样传递
***.next(JSON.parse(JSON.stringify(customerSearchInfo))

sinppet代码:

customerSearchQuery=新主题();
customerSearchQuery$=this.customerSearchQuery.pipe(
地图(查询信息=>{
queryInfo.keyWord=queryInfo.keyWord.trim();
返回查询信息;
}),
去盎司(查询信息=>{
if(queryInfo.skip>1 | | queryInfo.keyWord==“”){
返回间隔(0);
}
返回间隔(800);
}),
差异性变化(uu.isEqual),
switchMap(queryInfo=>this.scmContext.BA_Customers.GetPage(queryInfo.Execute())
);