Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Асинхронный вызов толстых функций (https://javascript.ru/forum/events/19343-asinkhronnyjj-vyzov-tolstykh-funkcijj.html)

ваый 02.08.2011 13:55

Ничего не берусь утверждать про применимость этого метода, потому что сам не использовал. Но то что таким образом возможно параллельно выполнить несколько процессов - точно. Наваял простой пример. Конечно, примитив, но все же процессы идут параллельно. Хотя хотелось бы проверить на реальном случае, как бы это было.
var one = function() {
    console.log('One started');
    var inter = 0;
    var counter = 0;
    var logger = function() {
        inter = setInterval(function() {
            counter++;
            console.log('One is working! Counter: ' + counter);
        }, 500);
    };
    logger();
    setTimeout(function() {
        clearInterval(inter);
        console.log('One finished');
    }, 4000);
}
 
var two = function() {
    console.log('Two started');
    setTimeout(function() {
        console.log('Two finished');
    }, 3000);
}
 
var functions = [one, two];

for (var i=0; i<functions.length; i++) {
    setTimeout(functions[i], 15);
}

dmitriymar 02.08.2011 13:57

ваый,
ещё раз
http://javascript.ru/tutorial/events/timing
!!!

Kolyaj 02.08.2011 13:58

Цитата:

Сообщение от ваый
setTimeout это один из известных методов для распараллеливания выполнения процессов

setTimeout не распараллеливает процессы, он откладывает их выполнение. Выполняются они последовательно, но хз в каком порядке.

ваый 02.08.2011 14:01

Цитата:

Сообщение от dmitriymar (Сообщение 116843)

Да, я читал, и согласен с тем что ты говоришь, ставят в очередь..

Цитата:

Сообщение от Kolyaj
setTimeout не распараллеливает процессы, он откладывает их выполнение. Выполняются они последовательно, но хз в каком порядке.

Ну да, это типа эмуляция параллельности.

Но должен признать, что не совсем понимаю, как тогда в приведенном выше мною примере, два процесса выполняются одновременно. Это ведь так?

dmitriymar 02.08.2011 14:07

Цитата:

Сообщение от ваый
Ну да, это типа эмуляция параллельности.

нет, это не эмуляция .посмотри что тебе Kolyaj, написал и поймёшь почему у тебя результат такой

Kolyaj 02.08.2011 14:11

Цитата:

Сообщение от ваый
не совсем понимаю, как тогда в приведенном выше мною примере, два процесса выполняются одновременно.

Так ты же там ещё setTimeout-ов ставишь.


Часовой пояс GMT +3, время: 14:04.