setTimeout在本机循环中

时间:2018-10-17 16:03:04

标签: android react-native

我正在尝试实现智能搜索的逻辑。我在onChangeText上的TextInput中使用以下代码

 clearTimeout(this.timeout);
        this.timeout = 0
        this.timeout = this.timer(text);

这里我要清除最后一个timeOut并用timer方法设置一个新值

timer = (searchText) => {
        const { selectedFilter } = this.state

        setTimeout(function () {
            //Hit Api
            console.log("new instance" + selectedFilter)


        }, 2000);
    }

上面的代码可以正常工作,但是有一个问题,以前的监听器没有被清除。所以我要多次获得控制台。请建议我我在做什么错。 提前致谢。

1 个答案:

答案 0 :(得分:1)

您只需要返回setTimeout调用返回的值,就像这样:

timer = (searchText) => {
    const { selectedFilter } = this.state

    return setTimeout(function () {
        //Hit Api
        console.log("new instance" + selectedFilter)
    }, 2000);
}

此外,您不需要在this.timeout = 0之前做this.timeout = this.timer(text);