条件设置超时调用
Conditional setTimeout call
据
我所知,没有办法让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)
相关文章:
- jasmine 2-在jasmine指定的超时时间内未调用异步回调.DEFAULT_TIMEOUT_INTERVAL
- setTimeout() 函数在超时持续时间之前调用
- 导致ajax调用超时错误的原因
- window.set同步处理异步调用的超时
- 条件设置超时调用
- 为接收事件的函数调用设置超时不适用于 IE7
- 具有超时的地理位置会导致错误处理程序被调用两次
- 承诺与函数调用/设置超时
- 量角器根据条件单击嵌套元素,错误 - 在指定的超时内未调用异步回调
- 画布计时器的设置超时调用函数
- 如何在角度 js $http调用中显示超时错误
- 多个设置超时调用的时间段计数
- 如何在函数调用之间设置超时
- jQuery 超时函数从未在 mouseEnter mouseleave 上调用过
- Response.重定向不能在会话超时的页面回调中调用
- Javascript中来自客户端的Web服务调用超时
- 超时后调用函数数组-JavaScript
- 超时函数完成后如何调用函数
- 为什么我的函数在setTimeout()超时之前被调用
- Javascript 客户端上的 Websocket 调用超时