Я новичок в node и стараюсь использовать преимущества async и поведения событий в node. Я использовал для понимания из node все, что обрабатывает объект Event, это будет асинхронное выполнение.
Тогда я попробовал это, рассмотрю следующий код:
var events = require("events");
var event = new events.EventEmitter();
event.on("work", function () {
for (var i = 0; i <= 10; i++) {
console.log("I do my work " + i);
}
event.emit("done");
});
var async = function (cb) {
event.on("done", cb);
event.emit("work");
for (var i = 0; i <= 10; i++) {
console.log("Async " + i);
}
}
async(function () {
console.log("I am done callback!");
});
Это асинхронное выполнение? По-моему, нет! Почему, потому что я прочитал это предложение много:
Событие увольняется, поэтому идите и что-то делайте, а затем, когда вы закончите, придите назад и скажи мне, но пока я сделаю что-то еще.
Как сценарий ресторана быстрого питания. Но вышеприведенный код, когда событие будет запущено, произойдет следующая последовательность:
- войдите в обратный вызов
- пропустить цикл
- Я делаю свою работу n
- активировал выполненное событие
- вывод завершен обратный вызов!
- вывод Async n
почему я сделал обратный вызов! выйдет до Async n? Почему здесь не нравится сценарий ресторана быстрого питания, например
рабочее мероприятие уволено, идите, и вы делаете, и возвращаетесь, когда вы сделано, пока я выведу Async n
Это я использовал для понимания поведения, управляемого событиями, и асинхронизации в node. Но теперь я очень смущен. Я знаю, javascript работает в одном потоке. Как я могу написать функцию async с эмиттером событий? Но я думаю, что это невозможно, потому что, когда я испускаю событие, он немедленно выполнит обработчик.