2015-05-25 4 views
1

Это мой код для запуска DFS на javascript, я искал и пытался использовать setTimeout для задержки каждой ничьей в течение 3 секунд, но это не сработает. Может ли кто-нибудь показать мне способ сделать это?Как приостановить выполнение кода javascript

function DFSWithDirectedGraph(v) { 
     Nodes[v].visited = true; 
     reDrawNode(Nodes[v].x, Nodes[v].y, Nodes[v].id, 'blue'); 
      for(var j = 0; j<i; j++) { 
       if(Path[v][j] != undefined && Nodes[j].visited == false) { 
        drawArrow(Nodes[v].x, Nodes[v].y, Nodes[j].x, Nodes[j].y, 'blue', Path[v][j]); 
        DFSWithDirectedGraph(j); 
        if(Path[j][v] != undefined) { 
         drawArrow(Nodes[j].x, Nodes[j].y, Nodes[v].x, Nodes[v].y, 'green', Path[j][v]); 
        } else { 
         drawArrow(Nodes[j].x, Nodes[j].y, Nodes[v].x, Nodes[v].y, 'green', ""); 
        } 
       } 
      } 
    } 
+0

SetTimeout является асинхронным, что означает, что он doen't выполнение паузы кода. Но вы можете передать функцию обратного вызова в setTimeout, и она будет вызываться после определенного количества времени. – starikovs

+0

Вот аналогичный вопрос http://stackoverflow.com/questions/951021/what-do-i-do-if-i-want-a-javascript-version-of-sleep – starikovs

ответ

0
setTimeout(function() { ...your code... }, time_in_milliseconds); 

Обратите внимание, что для того, чтобы повторно вызвать функцию после того, как говорят T миллисекунды,

function f(params) { 
    ... do your work ... 
    id = setTimeout(f, T); 
} 

f(actual_params); 

Это будет вызывать функцию f через каждые T миллисекунд. Вы можете удалить таймаут, используя clearTimeout.

clearTimeout(id); // id returned from the setTimeout function 
0

Если вы хотите это сделать, вы должны использовать другой тип цикла. Цикл for не будет останавливаться между каждым циклом.

Я хотел бы сделать что-то вроде этого:

var counter = 0; 
function step(){ 
    //Do your loop code here 
    counter++; 
    if(counter >= {{length of loop}}){ 
      endLoop(); 
    }else{ 
     setTimeout(step, 3000); 
    } 
} 

step(); 
+0

как-то, он испортил мои последовательности рисования. Можете ли вы помочь мне запустить событие draw с теми же последовательностями? – Gii

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