Асинхронное программирование
Асинхронное программирование или Event-driven программирование - общее название для стиля программирования, при котором результат работы функции приходит не сразу после вызова, а когда-нибудь потом.
В Javascript такое - сплошь и рядом. На этом построен AJAX и javascript-анимация.
Писать программы, в которых результат вызова функции приходит неизвестно когда - куда сложнее, чем обычные. Вложенные вызовы, обработка ошибок, контроль за происходящим - все усложняется.
Поэтому люди изобрели некоторые полезные методы, облегчающие асинхронную жизнь.
- Объект Deferred.
Каждый, кто когда-либо использовал AJAX, знаком с асинхронным программированием. Это когда мы запускаем некий процесс (скажем, XMLHTTPRequest ) и задаем функцию callback обработки результата.
На первый взгляд, все очень просто, но лишь до тех пор, пока мы не захотим добавить вызов новой функции после callback , сделать удобную обработку ошибок и исключений, а также - предусмотреть добавление новых функций в конец цепочки асинхронных вызовов.
Один способ - добавлять каллбэки в параметры всех функций. Другой - использовать для управления асинхронностью отдельный объект. Назовем его Deferred .
Такой объект есть, например, в библиотеке Mochikit и во фреймворке dojo. читать дальше »
- Вложенные асинхронные вызовы. Объект Deferred в деталях.
Объект Deferred инкапсулирует последовательность обработчиков для еще не существующего результата, чем сильно упрощает сложные AJAX-приложения. Он предоставляется различными фреймворками (Dojo Toolkit, Mochikit) и отдельными библиотечками (jsDeferred, Promises etc).
С его помощью можно добавлять обработчики не в момент запуска метода (например, посылки запроса XMLHTTPRequest() , а в любой момент после этого. читать дальше »
|
как всё здорово! правда, ничего не понятно(