javascript - Conditional setTimeout call - Stack Overflow

As far as a I know, there is no way to get setTimeout to run synchronously.I have this code, where foo

As far as a I know, there is no way to get setTimeout to run synchronously.

I have this code, where foo is a decently long function (20 lines or so).

if(delay == null){
  function foo(){

  }()
}
else {
   setTimeout(function(){
     function foo(){

     }()
   }, delay);
 }

what would very convenient, would be if setTimeout would accept an delay argument of -1, and then would just run synchronously/immediately, something like this:

var delay = delay || -1;

   setTimeout(function(){
     function foo(){

     }()
   }, delay);  // if delay is -1, will run immediately.

I don't think this functionality works with setTimeout, is there another way I can prevent having to write out the foo function twice? The only good solution I have is to create a helper function, but that's not as convenient :)

As far as a I know, there is no way to get setTimeout to run synchronously.

I have this code, where foo is a decently long function (20 lines or so).

if(delay == null){
  function foo(){

  }()
}
else {
   setTimeout(function(){
     function foo(){

     }()
   }, delay);
 }

what would very convenient, would be if setTimeout would accept an delay argument of -1, and then would just run synchronously/immediately, something like this:

var delay = delay || -1;

   setTimeout(function(){
     function foo(){

     }()
   }, delay);  // if delay is -1, will run immediately.

I don't think this functionality works with setTimeout, is there another way I can prevent having to write out the foo function twice? The only good solution I have is to create a helper function, but that's not as convenient :)

Share Improve this question asked Mar 14, 2016 at 18:59 Alexander MillsAlexander Mills 101k166 gold badges539 silver badges919 bronze badges 1
  • You could change foo to run accordingly ? Passing a variable in it ? – Harshal Carpenter Commented Mar 14, 2016 at 19:01
Add a ment  | 

4 Answers 4

Reset to default 3

Try this:

function foo(){

}
if(delay == null){
  foo();
}
else {
   setTimeout(foo, delay);
 }

Is there another way I can prevent having to write out the foo function twice?

Yep.

Define foo:

function foo() {

}

And then run it immediately if delay === -1, otherwise in a setTimeout:

if (delay === -1)
    foo();
else
    setTimeout(foo, delay);

This is really old, but you can simply just use an inline condition for the time delay.

setTimeout(foo, isDelay ? delay : 0)

Mention "delay" time at least 1000 milisec.


setTimeout(foo, isDelay ? delay : 1000)

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745579572a4634174.html

相关推荐

  • javascript - Conditional setTimeout call - Stack Overflow

    As far as a I know, there is no way to get setTimeout to run synchronously.I have this code, where foo

    20小时前
    30

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信