Последовательный вызов асинхронных функций
3 мин
Как известно, язык JavaScript преследует парадигму событийно-ориентированного программирования. Это, безусловно, хорошо, но что делать, если за одной асинхронной функцией должна вызываться другая асинхронная функция, а затем еще одна, и еще… Иногда такой код очень запутывает, и не только человека привыкшего к синхронному и поочередному вызову функций. Это касается сложных анимаций, таймаутов, аякса, когда за одним должно следовать другое, и так дальше.
Поэтому, я разработал свой костыль, который позволяет более наглядно вызывать асинхронные функции, запускающие callback после выполнения. Вполне вероятно, что решение уже давно существует, но я, к сожалению, такого решения не нашел.
UPD

Ниже моё решение, являющееся аналогом этой функции модуля async и кучи других подобных решений, представленных в комментариях. Спасибо всем комментирующим и sedictor в частности.
/UPD
Рассмотрим пример (который взят из головы и в нем возможны ошибки) гипотетического парсера сайта, который после парсинга заносит данные в БД, и, после занесения, вызывает некоторый код.
Много вложенных колбеков — не есть гуд, пробуем по-другому.
Поэтому, я разработал свой костыль, который позволяет более наглядно вызывать асинхронные функции, запускающие callback после выполнения. Вполне вероятно, что решение уже давно существует, но я, к сожалению, такого решения не нашел.
UPD

Ниже моё решение, являющееся аналогом этой функции модуля async и кучи других подобных решений, представленных в комментариях. Спасибо всем комментирующим и sedictor в частности.
/UPD
Рассмотрим пример (который взят из головы и в нем возможны ошибки) гипотетического парсера сайта, который после парсинга заносит данные в БД, и, после занесения, вызывает некоторый код.
var html = '';
request.on('response', function (response) {
response.on('data', function (chunk) {
html = html + chunk;
});
response.on('end', function() {
//какой-то парсер
parse(html, function(data){
//какая-нибудь функция, добавляющая данные в базу
addToDatabase(data, function() {
doSomething();
})
});
});
});Много вложенных колбеков — не есть гуд, пробуем по-другому.
Не так давно молодая команда разработчиков YTG (Yocto Technology Group) отпраздновала свой первый релиз. Когда я увидела то, что у них в итоге получилось, то была приятно удивлена. McGyro, а именно так называется их игра для iPad, iPhone и iPod Touch, порадовал меня интересной концепцией геймплея, основанной на наличии в устройствах гироскопа, весёлой и лёгкой манерой подачи сюжета, остроумными диалогами, а также запоминающимся визуальным стилем. В художественном исполнении игры, мне, как большому любителю мультяшного стиля, понравилось всё. Нарисовано довольно лаконично, но в то же время стопроцентно передаёт атмосферу американского вестерна. Дух дикого дикого запада чувствуется везде, даже в главном меню игры, которое стилизовано под старый деревянный указатель, слегка раскачивающийся на ветру на фоне пустынного ландшафта. Так и тянет выбрать дорогу и отправиться на поиски приключений. 






Навеяно статьей 
