Хотя детали реализации между реальной жизнью и нашим примером немного отличаются, концепция та же: вы запускаете «что-то делать», и обратный вызов будет вызываться через тот или иной механизм, когда работа будет завершена.
// synchronous Javascript
var result = db.get('select * from table1');
console.log('I am syncronous');
// asynchronous Javascript
db.get('select * from table1', function(result){
// do something with the result
});
console.log('I am asynchronous')
ю, что в синхронном коде console.log () выполняется после получения результата из db, тогда как в асинхронном коде console.log () выполняется до того, как db.get () извлекает результат.
Теперь мой вопрос: как происходит асинхронный код за кулисами и почему он не блокируется?
Я искал стандарт Ecmascript 5, чтобы понять, как работает асинхронный код, но не смог найти слово асинхронный во всем стандарте.
А из nodebeginner.org я также узнал, что мы не должны использовать оператор return, поскольку он блокирует цикл обработки событий. Но nodejs api и сторонние модули содержат операторы return везде. Так когда же следует использовать оператор return, а когда - нет?
Может кто-нибудь пролить свет на это?