使用javascript在超时中有条件地包装代码

时间:2015-07-29 19:20:26

标签: javascript

我有几行代码,我想根据标志在超时中包装。这样做的简单方法是:

var myCondition = // true or false
if(myCondition){
     setTimeout(function(){
         myVar++;
         myFunction();
         something = somethingElse;
     }, 1000 );
} else {
    myVar++;
    myFunction();
    something = somethingElse;
}

有没有更短的方法来实现这一目标?比如以某种方式使用.call?

正如评论中所指出的,我知道我可以将代码包装在一个函数中:

var myWrapperFunction = function(){
    myVar++;
    myFunction();
    something = somethingElse;
}

但我正在寻找的是以短于上述方式应用超时的条件方式。

1 个答案:

答案 0 :(得分:1)

不确定为什么更短让它变得更好或更容易理解。最简单的方法是缩短它,将公共代码放入函数并根据条件分配或调用它。

var fnc = function () { /* common code */};
if (x) { 
    setTimeout(fnc, 1000); 
} else {
    fnc(); 
}

或将超时设置为零

var time = x ? 1000 : 0;
setTimeout(fnc, time);