首页 > 解决方案 > Javascript:更新超时而不重新创建它

问题描述

我想知道是否有更好的方法来更新 JS 超时而无需重新创建它。

例如,我有这样的事情:

<input type="text" onchange="doSomething">

在我的脚本中,我正在这样做:

let activeTimeout = null
let doSomething = (event) => {
    if( activeTimeout !== null) clearTimeout(activeTimeout)
    activeTimeout = setTimeout(() => {
        console.log(event.target.value) // → Here i'm doing an XHR request to an API
        activeTimeout = null
    }, 2000)
}

如您所见,我必须销毁超时并重新创建它。我试图做 aconsole.log(activeTimeout)但它给了我一个数字,也许是一个 ID,所以我想知道是否没有办法做类似的事情:

let activeTimeout = null
let doSomething = (event) => {
    if( activeTimeout !== null) {
        window.timeouts[activeTimeout].time = 2000
    } else {
        activeTimeout = setTimeout(() => {
            console.log(event.target.value) // → Here i'm doing an XHR request to an API
            activeTimeout = null
        }, 2000)
    }
}

感谢您的建议。

再见

标签: javascripttimeout

解决方案


推荐阅读