在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....
添加回答
举报
0/150
提交
取消