在页面加载时,我设置了一些函数并调用了第一个应该逐步完成的函数。
after5Seconds();
function after5Seconds() {
setTimeout(hideOne, 5000);
}
function hideOne() {
$('.toggleme#one').fadeOut(showTwo);
}
function showTwo() {
$('.toggleme#two').fadeIn('125', 'swing', startAllOver);
}
我发现通常一些回调会停滞不前并且无声地失败,我开始更新每个回调更像是:
类似的东西:
function wrapMeInDelay(fn, timer) {
var hasBeenCalled = false;
var ctx = function() {
if (hasBeenCalled) {
return false;
} else {
hasBeenCalled = true;
return fn();
}
};
setTimeout(ctx, timer);
return ctx;
}
基本上我想开始向回调添加超时,以确保在jquery /任何回调不首先触发它时调用它们。
还有另一种更常见的做法,我不知道吗?
答案 0 :(得分:0)
如果我理解正确,你只想在X秒后调用某个函数,只有在没有调用此函数的情况下?
var _timeout;
function onTrigger(){
if (_timeout){
clearTimeout(_timeout);
};
console.log("function triggered");
};
_timeout = setTimeout(onTrigger, 5000);
onTrigger();
您需要存储对该超时的变量引用,并且在调用函数时,删除该超时(clearTimeout)。在这种情况下,不会执行超时。