为了账号安全,请及时绑定邮箱和手机立即绑定

angular2函数去抖的问题

angular2函数去抖的问题

呼啦一阵风 2018-11-22 18:15:54
在angular2环境中写了一个自定义的debounce函数,因为使用了服务中的本地变量,所以没有使用闭包在传入函数作为参数时,遇到了两个问题如何给传入函数加入参数如何将传入函数的作用域绑定在声明他的component中代码如下debounceTime(fn, delay) {if (isUndefined(this.timeout)) {this.timeout = setTimeout(() => {            fn();        }, delay);    } else {        clearTimeout(this.timeout);        this.timeout = setTimeout(() => {            fn();        }, delay);    }} emitSubmitDate(event) {    this.submit_data['search'] = event.value;    this.globalFuncService.setInfoListSource(this.request_type, this.request_url,                          this.submit_data);    this.globalFuncService.emitInfoListSource();}staffSearch(event) {    this.globalFuncService.debounceTime(this.emitSubmitDate, 500);}希望将event作为参数传入emitSubmit函数,然后再将带有event的emitSubmit传入debounce实际遇到的问题是this的变化导致各种undefined本人js不是很好。。。希望各位多多指教
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

staffSearch(event) {

    this.globalFuncService.debounceTime.apply(this, [() => this.emitSubmitDate(event), 500]);

}

apply变更this指向,也可以用call或bind

传event则通过一个闭包实现


PS: angular2本身就依赖了Rx,何必自己写debounceTime....


查看完整回答
反对 回复 2018-12-30
  • 1 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信