2015-11-17 3 views
1

Я пытаюсь перезапустить анонимную функцию. Если эта функция имела название я мог бы назвать, например:Restart Anonymous Функция

function myFunction(){ 
    if(false){ 
     myFunction(); 
    } 
} 

Однако эта ситуация не относится к:

function(){ 
    if(false){ 
     ??? // Perhaps use a "this". Not sure. 
    } 
} 

Спасибо за помощь заранее!

+2

Так что дайте ему имя ... – epascarello

ответ

3

Очевидным решением является просто дать анонимной функции имя. Но, поскольку вы, кажется, знаете это, я предполагаю, что вы не можете этого сделать. Таким образом, вместо этого, вы можете просто поставить под названием локальной функции внутри него и называете это:

function() { 

    function run() { 
     if(some condition){ 
      // call this again in 1 second 
      setTimeout(run.bind(this), 1000); 
     } 
    } 

    run.call(this); 
} 

Если значение this не используются в функции, то вы можете упростить его следующим образом:

function() { 

    function run() { 
     if(some condition){ 
      // call this again in 1 second 
      setTimeout(run, 1000); 
     } 
    } 

    run(); 
} 
Смежные вопросы