使用TypeScript延迟javascript / jQuery搜索而不是等待

时间:2016-04-22 08:59:20

标签: javascript jquery typescript settimeout

我正在尝试使用TypeScript构建一个简单的延迟搜索。我使用了@stackoverflow所述的答案。

目前,我的脚本如下所示:

$searchInput: JQuery;

timer: number;
waitTimeOut = 3000;

init() : void{
    this.$searchInput.on("input propertychange paste", this.handleSearchInputChange);
}

handleSearchInputChange = (evt: Event): void => {
    var $theInput = $(evt.currentTarget);

    clearTimeout(this.timer);
    var val = $theInput.val();
    this.timer = setTimeout(this.lookup(val), this.waitTimeOut);
}

lookup = (searchTerm: string): void => {
    console.log(`I should start a search with [${searchTerm}]`);
}

然而,根本没有延迟。每个打字的字母都会立即触发lookup - 来电。 这是timerwaitTimeOut的范围问题吗?或者“函数定义”是否在错误的范围内?

仍然不确定此处是否使用fat-arrow是否正确。

1 个答案:

答案 0 :(得分:3)

根据您当前的实现,您当前正在调用函数lookup(val)并将其返回值传递给setTimeout

setTimeout接受字符串格式或函数的代码来执行哪个延迟间隔。

使用

var self = this;
this.timer = setTimeout(function(){
    self.lookup(val);
}, this.waitTimeOut);

而不是

this.timer = setTimeout(this.lookup(val), this.waitTimeOut);