条件设置超时调用

Conditional setTimeout call

本文关键字:调用 超时 设置 条件      更新时间:2023-09-26

我所知,没有办法让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)