Короткий ответ: Нет, они асинхронны.
Длинный ответ:
Как только вы сделаете что-либо асинхронный, внутри parralel обратных вызовов, вы можете ожидать Trulu
получить колл немедленно после. Когда вы вызываете cb
, он сообщает, что функция вернулась. Когда все функции вернутся, он вызовет последний обратный вызов.
Таким образом, если вы делаете setTimeout
без какого-либо времени, и каждая функция возвращается без каких-либо асинхронов, они могут вести себя синхронно, потому что Javascript работает только по одной единице за раз. И так как они, вероятно, начинаются по порядку, это будет выглядеть так, как если бы он выполнялся синхронно.
Возьмите это в качестве примера:
var looping = true;
setTimeout(function() {looping = false;}, 1000);
while(looping) {
...
}
Этот код никогда не оставит, как SetTimeout никогда не будет запущен. В async.parralel
я почти уверен, что каждый обратный вызов будет выполнен после завершения текущего блока. Это означает, что вы всегда будете иметь свой console.log("Trulu")
, выполненный перед любым обратным вызовом внутри async.parralel
.
Примечание
Если вы ищете, чтобы делать синхронные вещи, вы не должны использовать модуль под названием асинхронной. Совершенно очевидно, что это будет асинхронный.
Тем не менее, я считаю, что существует большое недоразумение с термином async
. Асинхронный не является синонимом параболизма или одновременным. Асинхрон, просто означает «без порядка во времени». Это может быть одновременным, но это может быть и последовательным. Чтобы запустить асинхронный код в Javascript, вам нужно полагаться на цикл событий.
Цикл событий может обрабатывать только одно событие за раз, setTimeout
просто помещает событие в цикл. Как только обработчик событий уходит, он переходит к следующему событию и так далее.
В вашем случае, поскольку вы не вызываете cb
внутри обработчика событий, они будут вызываться синхронно, так как они никогда не покидают текущий event
.
Это не будет отвечать на Ваш вопрос, и я знаю, что, но я хочу сказать, что вы могли бы обернуть свои вещи в обещание, чтобы убедиться в этом – Sprottenwels
Я предполагаю, что если вы хотите убедиться, что после обратных вызовов вы можете записать свою функцию в журнал обратного вызова. Но я не вижу разницы между этим и Готовым! log – CubanAzcuy
, если вы застряли на async.js, у него есть метод серии, который делает то, что вы хотите. –