鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML/ js綁定事件如何優(yōu)雅的防止多次執(zhí)行

js綁定事件如何優(yōu)雅的防止多次執(zhí)行

綁定事件中有異步操作,我一般都是設(shè)個(gè)flag,if(flag)return;然后異步完在設(shè)置一下,,但是一個(gè)頁(yè)面的操作事件多了的話,我這flag就有點(diǎn)多,感覺(jué)很煩..不知道大家是怎么處理的

回答
編輯回答
墨小白

封裝一下,你也可以改一改

function flag(fn) {
    var bool = true
    function rest() {
        bool = true;
    }
    return function () {
        if (bool) {
            bool = false;
            arguments = Array.prototype.slice.call(arguments);
            arguments.push(rest)
            fn.apply(this, arguments);
        }
    }
}

document.getElementById("btn").onclick = flag(function (e, rest) {
    console.log(this)
    setTimeout(function () {
        console.log(e)
        rest()//重置
    }, 1000)
})
2017年7月20日 08:04