Я ищу нетривиальные ресурсы по понятиям асинхронного программирования, предпочтительно книги, но также содержательные статьи или статьи.Речь идет не о простых примерах, таких как передача обратного вызова слушателю событий в программировании с графическим интерфейсом пользователя, или отключение производителя-потребителя по очереди, или написание обработчика загрузки для вашего HTML (хотя все они действительны).Речь идет о проблемах, с которыми могут столкнуться разработчики lighttpd или кто-то, занимающийся существенной бизнес-логикой в JavaScript, который работает в браузере или на node.js.Речь идет о ситуациях, когда вам нужно передать обратный вызов обратному вызову обратного вызова ... о сложных асинхронных потоках управления, и в то же время оставаться в здравом уме.Я ищу концепции, которые позволяют вам делать это систематически, рассуждать о такого рода потоках управления, серьезно управлять значительным количеством логики, распределенной в глубоко вложенных обратных вызовах, со всеми вытекающими отсюда проблемами синхронизации, синхронизации, связываниязначения, передача контекстов и т. д.
Я бы не стал уклоняться от некоторых абстрактных исследований, таких как стиль продолжения, линейная логика или временные рассуждения.Посты типа this , кажется, идут в правильном направлении, но обсуждают конкретные вопросы, а не полную теорию (например, в посте упоминается модель «реактора», которая представляется актуальной, без ее описания).
Спасибо.
РЕДАКТИРОВАТЬ:
Чтобы дать более подробную информацию об аспектах, которые меня интересуют. Меня интересует дисциплинированный подход к асинхронному программированию, теория, если хотите, возможнопросто набор конкретных шаблонов, которые я могу передать коллегам-программистам и сказать: «Так мы делаем асинхронное программирование» в нетривиальных сценариях.Мне нужна теория, чтобы распутать слои обратных вызовов, которые случайно не работают, или дают ложные результаты.Я хочу подход, который позволит мне сказать: «Если мы сделаем это таким образом, мы можем быть уверены, что ...».- Делает ли это что-то более понятным?
РЕДАКТИРОВАТЬ 2:
Поскольку обратная связь указывает на зависимость от языка программирования: это будет JavaScript, но, возможно, достаточно предположить, что язык допускает более высокий порядокфункции.
РЕДАКТИРОВАТЬ 3:
Изменен заголовок, чтобы быть более конкретным (хотя я думаю, что шаблоны проектирования - это только один способ взглянуть на него, но, по крайней мере, это дает лучшее направление).