仅执行一次功能-根据条件

时间:2019-05-08 10:48:20

标签: javascript

我知道如何执行一次函数,这不是问题

首先,这是我的代码

 var executed1 = false;
 var executed2 = false;
 var executed3 = false;

function myFunction()
{   
    if(-------------------)
    {
        //Verification - If the others conditions have ever been called
        if (executed2)
        {
            executed2 = false;
        }
        else if(executed3)
        {
            executed3 = false;
        }


        //Verification - If the condition have ever been called during this condition = true;
        if (!execution1) 
        {
            execution1 = true;
            //My code here ...
        }        
    }
    else if (-------------------)
    {

        if (executed1)
        {
            executed1 = false;
        }
        else if(executed3)
        {
            executed3 = false;
        }

        if (!execution2) 
        {
            execution2 = true;
            //My code here ...
        }                            
    }
    else if (-------------------)
    {
        //Same thing with execution3         
    }
}
setInterval("myFunction()", 10000);

我将以第一个条件为例

(1)如果条件为true,我想执行我的代码,但是只有第一次:如您所见,我的函数每10s执行一次。只要第一个条件为真,则不应追加任何内容。

如果第一个条件变为false,第二个条件true,则过程相同。

但现在,如果第一个条件是truefalse,我希望如果条件再次变为true,它将是与(1)

有没有办法阅读更干净的代码来做到这一点? 因为,现在只有3个条件,但可能有100个。

1 个答案:

答案 0 :(得分:0)

使用clearInterval停止执行您的函数,如果无法检查条件,则使用

var fid = setInterval(myFunction, 1000);
var cond = [false,false,false];

function myFunction()
{   
  console.log(cond.join());
  
  // check conditions in some way here (e.g. every is true)
  if(cond.every(x=>x)) { 
    clearInterval(fid);
    console.log('Execute your code and stop');
  } 
  
  // change conditions (example)
  cond[2]=cond[1];
  cond[1]=cond[0];
  cond[0]=true; 

}