gpt4 book ai didi

javascript - 如果在此期间发生其他事件,如何停止调用延迟函数?

转载 作者:行者123 更新时间:2023-12-03 09:28:14 24 4
gpt4 key购买 nike

在某个事件发生后,我有一个以 1.5 秒延迟触发的函数(rightMenu)。然而,我的挑战是弄清楚如何检查在此期间是否调用了 leftMenu,然后停止 setTimeout 函数来调用 rightMenu。

var leftMenu = function() {
// some code here
}

var rightMenu = function() {
// some code here
}

$('#leftMenu').on('click', function() {
leftMenu();
})

$('#rightMenu').on('click', function() {
rightMenu();
})


if (...) {
leftMenu();
} else {
setTimeout(function() {
rightMenu();
}, 1500);
}

最佳答案

我不确定这是否是您所要求的,但您可以清除间隔。例如:

function asyncFun() {
// some code
}

setTimeout(asyncFun, 5000); // this will run after 5 seconds


var asyncHandle = setTimeout(asyncFun, 10000);

clearTimeout(asyncHandle); // this cancels the function call

我觉得这就是你要问的......

<小时/>

如果没有,我的另一种解释是,当您位于其他菜单时,您希望暂时从 #leftmenu#rightmenu 中删除事件处理程序。为此,您可以使用 $("#rightmenu").off("click") 清除 jQuery 中的事件处理程序。这个函数基本上与.on相反。请参阅here 。祝你好运!

<小时/>

对您的代码的另一个可能的修复:

/*
initialize your variable here. Technically doesn't change anything
because of hoisting, but I'm guessing based on your question you
haven't learned that yet.
*/
var callingRight;
var leftMenu = function() {

// some code here
}

var rightMenu = function() {
// some code here
}

$('#leftMenu').on('click', function() {
clearTimeout(callingRight); // clear the timeout on your global variable here.
leftMenu();

})

$('#rightMenu').on('click', function() {
rightMenu();
})


if (...) {
leftMenu();
} else {
callingRight = setTimeout(function() { // assign this setTimeout to your global variable
rightMenu();
}, 1500);
}

关于javascript - 如果在此期间发生其他事件,如何停止调用延迟函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com