lga*_*dos 19 javascript jquery settimeout
我开发了一小部分演示软件,其中包含每张幻灯片的幻灯片和资源.渲染幻灯片时,使用该setTimeout
方法延迟所有资产并在延迟后渲染.看起来很甜......
Yaaay !,要求已经改变,现在要求演示文稿像PowerPoint幻灯片一样,鼠标单击事件将导致下一个资产立即呈现给页面.
我的问题是; 有没有办法让我的超时立即开火?我可以在堆栈中获取并存储在创建超时时返回的timeoutid.唯一的另一个选择是取消超时,然后重新创建元素,这是我想要做的更多处理,我不想过多地重构我的代码.
有任何想法吗?
Dio*_*ane 21
如果您将计时器设置为:
var timer1 = window.setTimeout(mainFunction,500)
Run Code Online (Sandbox Code Playgroud)
通过这样做立即调用它:
window.clearTimeout(timer1)
mainFunction()
Run Code Online (Sandbox Code Playgroud)
关键是将功能与计时器分开.
Kil*_*roy 20
你可以将它包装在这样的闭包中:
function createTimeout(timeoutHandler, delay) {
var timeoutId;
timeoutId = setTimeout(timeoutHandler, delay);
return {
clear: function() {
clearTimeout(timeoutId);
},
trigger: function() {
clearTimeout(timeoutId);
return timeoutHandler();
}
};
}
var a = new Date();
var timeout = createTimeout(function() { console.log(a); }, 1000);
// timeout.clear();
timeout.trigger();
Run Code Online (Sandbox Code Playgroud)