2013-05-15 4 views
2

Так что в основном в приведенном ниже примере, если функция1 запущена, будет ли она ждать завершения функции2 до того, как тест будет равен 1? Или он выполнит функцию2 на отдельном «потоке», по существу выполняющем функцию2, и сделает тест равным 1 в одно и то же время? (Я думаю, что так оно и называется, я не слишком хорошо разбираюсь во всей многопоточной игре).Выполняет ли функция до тех пор, пока вызываемая функция не завершится до продолжения?

function function1() { 
    function2(); 
    test = 1; 
} 
+0

Он будет ждать его, затем продолжить. –

ответ

1

Нет, он подождёт function2.

Есть способы сделать многопоточность, но они требуют некоторой работы, см. here для получения дополнительной информации.

+0

Спасибо за такой быстрый ответ! Есть ли способ или метод, чтобы заставить его одновременно запускать функции 2 и test = 1? – Cains

+0

@Cains, перейдите по ссылке :-) – paxdiablo

2

Да, ваш function1 будет ждать function2, чтобы вернуться, прежде чем продолжить. Однако ваш function2 может вызывать такие вещи, как setTimeout, которые сами не будут работать до тех пор, пока function1 не завершится, но function2 все равно вернется до того, как function1 продолжит работу, даже если код, который он установил для запуска внутри setTimeout, еще не запущен.

Функции setTimeoutsetInterval) не работают в отдельных потоках, но они подделывают его, запуская свой код, когда все остальное закончено.

2

Это вопрос о том, как у вас установлена ​​реализация function2(). Однако почти весь javascript выполняется последовательным образом, если для его выполнения не используются setTimeout(), setInterval() или другой механизм, управляемый событиями. Это, однако, не соответствует действительности многопоточность, просто положить его обманывает, просто ждет остальной части кода для выполнения

Однако то, что у вас есть там говорят, что вы выполнить function2() затем ждать его завершения, а затем выполнить test = 1, Вы может почти думаю, что function2() корпус вставляется в начале function1() корпус. Ключевое слово «почти». Но это должно дать вам представление о том, как выполняется JS. Тем не менее, V8 (механизм javascript Google) может поддерживать псевдо-многопоточные среды. Хотя это можно технически сделать с обычным запуском мельницы JS, это становится очень большой беспорядок очень быстро, чтобы получить дополнительную информацию, посмотрите на это Tutorial.

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