Обратные вызовы JavaScript: не все асинхронные
Многие разработчики JavaScript предполагают, что все обратные вызовы в JavaScript являются асинхронными, особенно в определенных ситуациях, например, в браузере. запросы на основе XHR и файловый ввод-вывод Node.js. Однако среды браузера и узла различаются в своей обработке асинхронности обратного вызова.
Среда браузера
В браузерах асинхронность обратного вызова в первую очередь возникает из-за запросов XHR. Это связано с тем, что объект XHR браузера по умолчанию работает в асинхронном режиме, что позволяет выполнять неблокирующие запросы. Однако функции AJAX jQuery предоставляют флаг «async», для которого можно установить значение false, чтобы обеспечить синхронные запросы.
Среда Node.js
В Node.js асинхронность в обратных вызовах обычно возникает в результате операций с файловым вводом-выводом,process.nextTick, setTimeout или setInterval. При выполнении вызовов базы данных с помощью таких библиотек, как MongoDB/Mongoose, эти операции задействуют цикл событий V8 из-за своей изначальной блокирующей природы.
Определение асинхронных обратных вызовов
Отсутствие Стандартизированный способ обозначения асинхронных обратных вызовов в JavaScript может затруднить определение того, какие из них действительно являются. Разработчики должны обратиться к документации или изучить реализацию кода, чтобы определить асинхронность.
Создание асинхронных обратных вызовов
В более ранних версиях JavaScript для достижения асинхронности требовалось использование функций, предоставляемых хостом. . Однако с появлением Promises в ECMAScript 6 появился подход к асинхронности на уровне языка. Функции, возвращающие обещания, обеспечивают асинхронное выполнение обратных вызовов, зарегистрированных через then.
В заключение, не все обратные вызовы JavaScript по своей сути асинхронны. Среды браузера и узла по-разному обрабатывают асинхронность, и для определения асинхронности обратного вызова требуется просмотр документации и анализ кода. В то время как функции, предоставляемые хостом, предлагают средства для создания асинхронной функциональности, обещания предоставляют стандартизированный и удобный способ достижения асинхронности в JavaScript.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3