Доброго дня!
Как лучше организовать асинхронный код на Node.js? По старинке через лапшу колбеков обернутых в async.js или через yield и promise?
Какой вариант более надежный и удобный? (т.к. только недавно начал работать с promise, почувствовал что-то влажное в ухе. Пощупал, а это оказывается мозг вытекает).
P.S. Так же, где применим yield помимо асинхронного кода?
Ни чем не плохи, только медленные, как и async. Callback hell быстрее всего, только нужно вокруг группы функций, которые используют общие структуры данных сделать одно замыкание и все готово, и код красивый и все быстро.
HoHsi: генераторы нужны например там, где нужно получить много значений, но при этом нет нужды их хранить в памяти, т.е. значения нужны лишь один раз.
Простой пример: в БД миллиард записей, из которых надо сделать отчёт и сохранить его в файл. Тут нет нужды получать все эти записи сразу и хранить их в переменной. Да и памяти не хватит на такое. Вместо этого создаётся генератор, который каждый раз возвращает следующий элемент, пока не вернёт по-очереди все элементы. На каждой итерации ты просто добавляешь в файл отчёта полученный элемент. В итоге, в памяти будет максимум 1 элемент, который сразу же используется и забывается.
В целом, это такая штука, которая может вызываться и делать return несколько раз (в отличие от обычной функции), при этом она запоминает своё прошлое состояние.