2015-03-20 2 views
2

Возможно, это не очень подходящее название, но вопрос в следующем.Выполнение после завершения setTimeout

У меня есть этот кусок кода

var someprogram = function(){ if(stopprocess) return; //do things setTimeout(someprogram, 1000); } setTimeout(someprogram, 1000);

Софар это работает. После некоторого количества итераций, скажем 12, stopprocess является истинным, и целая вещь останавливается. Я хочу сделать еще несколько вещей после возвращения. Итак, вопрос в том, что лучший способ переписать структуру, чтобы иметь возможность сделать это? Потому что мне нужен тайм-аут, но я не знаю, как еще остановить все это, не используя return-statement. Есть идеи? (У меня есть только один файл javascript для этой задачи)

+1

обратного вызова в качестве аргумента или просто выполнить простую функцию? – StateLess

+0

http://jsfiddle.net/arunpjohny/os26vgc5/1/ –

+0

http://jsfiddle.net/arunpjohny/os26vgc5/2/ –

ответ

2

Может быть, это один работает для Вас: функция

var someprogram = function() { 
    if(stopprocess) { 
     //do the rest 

    } else { 
     //do things 
     setTimeout(someprogram, 1000); 
    } 
} 

setTimeout(someprogram, 1000); 
+1

простая и элегантная, спасибо! – user4065758

+1

приятный ответ приятель +1 –

3

Есть много способов сделать этот простой способ - написать всю свою логику в функции и выполнить ее.

var logic = function(){ 
     //do things 
    } 

и выполнить его перед возвращением

var someprogram = function(){ 
    if(stopprocess){ 
     logic(); // your code is executed now 
     return; 
    } 

    setTimeout(someprogram, 1000); 
} 
setTimeout(someprogram, 1000); 
+0

не может проголосовать, но на самом деле то, что мне нужно :) – user4065758

+1

@ user4065758 i я делаю от вашего имени +1, но я думаю, что это копия Trinimon answer –

Смежные вопросы