Асинхронность - синоним(вне очереди). Понятие асинхронности в node, когда сценарий не блокируется, к примеру при загрузке данных, т.е скрипт не ждет эту загрузку, а обрабатывает в фоновом режиме,а код обрабатывается дальше, но на клиенте, как раз наоборот, если дела обстоят с промисами, то каждая цепочка вызова функцию ждут друг-друга, т.е поочередно.
В redux, в асинхронных экшенах, метод dispatch, не отрисует, пока не загрузит с api(то есть ассинхронность, имеет обратный смысл). Кто поможет разобратся с этой путаницей, спасибо.
но на клиенте, как раз наоборот, если дела обстоят с промисами, то каждая цепочка вызова функцию ждут друг-друга, т.е поочередно.
Это не верно. Цепочка не ждет друг друга - поток не блокируется, так же как и node. Когда приходит ответ сервера - вызывается соответствующий callback. Но во время ожидания - ваш код работает (например - вы захотели отрендерить анимацию загрузки).
В асинхронных экшенах вы можете менять стейт (диспатчить) когда вам угодно. Обычно это делается два раза - когда запрос отправлен (инициирован) и когда пришел ответ. Между этими моментами у вас могут быть и другие экшены (пользователь нажал на кнопку, или что-то еще произошло) и вы таже асинхронно их обрабатываете.
Хорошо. А бывает ли случай, когда при асинхронной обработке, к примеру получение json'a, файл не успев загрузится, начинает отрабатываться? а он еще не загружен... То есть неблокируя сценарий, загружаем его, но обрабатываем уже функции обратного вызова.
Rapen: мы передаем исполнение callback'у, когда данные готовы. Если данные не готовы, а исполнение цепочки промисов продолжилось - то это уже говнокод, а не асихронность. Но чисто теоретически, так может быть. Но смысл-то?
Dark Hole: Я ведь еще салага). Как я понял, сам промис и его цепочки асинхронны, но передача данных и логики между цепочками синхронно, ведь так? Один then работает, а другой ждет. Нода осваивается чуть сложнее,чем клиент... Но все же осваивается:)