PS:
кстати по поводу NODE.js я погорячился setTimeout и setInterval работают точно так-же ... виноват... зато callback-и прерывают выполнение как и ожидается
var events = require("events");
var emitter = new events.EventEmitter; // создаём генератор
var someText = '';
// задаём обработчик пользовательского события "event1"
emitter.on("event1", function(data) {
if(){}
someText = someText + '-Async-'
});
for(var i = 0; i < 20; i++){
someText = someText + '-MainThead-';
emitter.emit("event1");
}
console.log(someText)
...
PPS: Вы безусловно правы ВСЕ... вы описываете реальное положение вещей. НО ЭТО НЕ АСИНХРОННОСТЬ !
Нельзя функцию с отложенным вызовом называть асинхронной. Это просто функция с отложенным вызовом и не более того.
Асинхронно - это не синхронно... то есть код будет выполняться в одном потоке но в смешанном режиме, по крайней мере такова асинхронность в низкоуровневом программировании.
когда выполнение двух функции (func1 и func2) в асинхронном режиме выглядит как-то так:
Выполняется инструкция из func1
Выполняется инструкция из func2
Выполняется инструкция из func1
Выполняется инструкция из func2
Выполняется инструкция из func2
Выполняется инструкция из func1
и т.д.
(правила скрещивания обусловлены платформой, ресурсами под инструкцию и т.д.)
они не паралельны, но и не синхронны... они асинхронны.
Здесь-же мы наблюдаем псевдоасинхронность...