2016-08-05 2 views
0

Я хотел бы запустить функцию step2() после завершения функции startGame().Есть ли способ вызвать функцию после окончания предыдущей функции?

function startGame() { 
    var t = document.createTextNode("X"); 
    document.getElementById("3x3").appendChild(t); 
    document.getElementById("3x3").style.fontSize = "120px"; 
} 
function step2() { 
    while (document.getElementById("3x1").innerHTML == "") { 
    } 
} 
+0

Затем сделайте вызов 'step2()' в конце 'startGame' –

+0

, как вы это делаете? –

+0

'step2()' кажется бесконечным циклом. Если внутри 'while' есть что-то, изменяющее HTML, значение условия никогда не изменится. – Barmar

ответ

1

Попробуйте это:

function startGame() { 
    var t = document.createTextNode("X"); 
    document.getElementById("3x3").appendChild(t); 
    document.getElementById("3x3").style.fontSize = "120px"; 
    step2(); 
} 
function step2() { 
    // Step 2 logic here 
} 
0

Yup! Вы можете посмотреть в Promises - либо версию, поставляемую ES6, либо используя библиотеку, такую ​​как Bluebird. Обещания позволяют вам привязать метод к функции, чтобы она выполняла синхронно.

В вашем случае, однако, вы можете просто позвонить по телефону step2() в конце startGame.

+1

Обещания обычно необходимы только для асинхронных функций. Здесь нет ничего асинхронного. – Barmar

1

Просто вызывать функции один за другим:

startGame(); 
step2(); 

Заявления просто выполняются последовательно, поэтому, когда первый вызов возвращает функция, следующий вызов функции сделанный.

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