据
我所知,没有办法让setTimeout同步运行。
我有这段代码,其中 foo 是一个相当长的函数(20 行左右)。
if(delay == null){
function foo(){
}()
}
else {
setTimeout(function(){
function foo(){
}()
}, delay);
}
非常方便的是,如果 setTimeout 接受 -1 的延迟参数,然后同步/立即运行,如下所示:
var delay = delay || -1;
setTimeout(function(){
function foo(){
}()
}, delay); // if delay is -1, will run immediately.
我认为此功能不适用于 setTimeout,有没有另一种方法可以防止两次写出 foo 函数?我唯一好的解决方案是创建一个帮助程序函数,但这并不方便:)
试试这个:
function foo(){
}
if(delay == null){
foo();
}
else {
setTimeout(foo, delay);
}
有没有其他方法可以防止两次写出
foo
函数?
是的。
定义foo
:
function foo() {
}
然后如果delay === -1
立即运行它,否则在setTimeout
中:
if (delay === -1)
foo();
else
setTimeout(foo, delay);
这真的很老,但您可以简单地使用内联条件来表示时间延迟。
setTimeout(foo, isDelay ? delay : 0)
提及"延迟"时间至少为 1000 milisec。
setTimeout(foo, isDelay ? delay : 1000)