dmitriymar,
В общем виде асинхронность не значит одновременное выполнение кода. Это всего лишь
не последовательное выполнение кода, основанное (чаще всего) на событиях.
Просто тот же самый msdn может запутать программиста, поскольку для увеличения скорости работы асинхронных методов, в .NET реализация обработчиков асинхронных вызовов и событий сделана в отдельном потоке и асинхронность просто скрывает части реализации многопоточности для программиста, но как уже было сказано, это не обязательное условие.
Цитата:
|
чего здесь асинхронного? или в чём поведение асснхронное? асинхронное было бы если бы они до паузы запустились.
|
Поведение этого кода не последовательно, а значит асинхронно. Мы генерировали событие и продолжили выполнять код метода, когда обработчики будут вызваны в "свободное время", отложено от момента вызова emit.
Просто из-за "обычных" примеров асинхронности в JavaScript происходит путаница. Асинхронность событий DOM не в том, что пользователь может стать источником события в любое время, а то, что в потоке JavaScript выполнение кода может быть прервано при выходе из текущего scope и выполнится обработчик этого события. Соответственно и для XHR - асинхронность не в том, что мы сделали вызов и он выполняется в то время, когда мы выполняем другой код, а в том, что при наступлении события (смена статуса, получение данных) будут вызваны соответствующие обработчики, даже если они будут выполнены в основном потоке выполнения.