Асинхронный JavaScript и цикл событий
Разберитесь в шаблонах асинхронного программирования, обратных вызовах, промисах, async/await и цикле событий Node.js.
«Асинхронный JavaScript и цикл событий» — бесплатный урок Node.js Backend Development Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Node.js Backend Development Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Node.js Backend Development Bootcamp содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What is Asynchronous Code?
Asynchronous code lets Node start a slow task — a file read or network call — and keep running other code instead of blocking the main thread.
Sync vs. Async Explained
Think of a chef: synchronous means standing idle while water boils; asynchronous means chopping veggies meanwhile. Node cooks like the async chef.
The Callback Pattern
Callbacks are functions you pass to be run later — the classic way to handle async work. When the task finishes, your callback is invoked with the result or error.
Simple Callback in Action
setTimeout is a textbook async operation: it waits a set delay, then fires the callback you handed it.
function greet(name, callback) {
setTimeout(() => {
const message = `Hello, ${name}!`;
callback(message);
}, 1000); // Wait 1 second
}
function displayMessage(msg) {
console.log(msg);
}
greet("Coddy", displayMessage);
console.log("Waiting for greeting...");The Challenge of Callback Hell
Nesting many dependent callbacks creates Callback Hell — deeply indented, hard-to-read code where error handling and maintenance become a nightmare.
Introducing Promises
A Promise represents a value coming now, later, or never. It lives in one of three states: pending, fulfilled, or rejected.
Using Promises
Handle a Promise with .then() for success and .catch() for errors — cleaner chaining than nested callbacks.
function fetchData(shouldSucceed) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (shouldSucceed) {
resolve("Data fetched successfully!");
} else {
reject("Failed to fetch data.");
}
}, 1000);
});
}
fetchData(true)
.then(data => console.log(data))
.catch(error => console.error(error));
fetchData(false)
.then(data => console.log(data))
.catch(error => console.error(error));Async/Await for Clarity
async/await is syntax over Promises that makes async code read like sync code. await pauses inside an async function until the Promise settles.
Async/Await in Practice
See how async/await flattens the previous example — and how a plain try...catch handles errors right inline.
function delayedMessage(msg, delay) {
return new Promise(resolve => {
setTimeout(() => resolve(msg), delay);
});
}
async function processMessages() {
try {
console.log("Starting process...");
const msg1 = await delayedMessage("First message!", 1000);
console.log(msg1);
const msg2 = await delayedMessage("Second message!", 500);
console.log(msg2);
console.log("Process finished.");
} catch (error) {
console.error("An error occurred:", error);
}
}
processMessages();The Node.js Event Loop
The Event Loop is Node's engine: when the call stack empties, it pulls queued callbacks and runs them — fueling non-blocking I/O on a single thread.
Async Concepts Check
Which of the following best describes the primary benefit of using asynchronous programming in Node.js?
Async & Event Loop Recap
Async work powers Node's reach: callbacks began it, Promises structured it, async/await cleaned it up, and the Event Loop drives it all.
Часто задаваемые вопросы
Урок «Асинхронный JavaScript и цикл событий» бесплатный?
Да — полный текст урока «Асинхронный JavaScript и цикл событий» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Node.js Backend Development Bootcamp, подпишись на CoddyKit PRO. Курс Node.js Backend Development Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Асинхронный JavaScript и цикл событий»?
Разберитесь в шаблонах асинхронного программирования, обратных вызовах, промисах, async/await и цикле событий Node.js. Ты практикуешь Node.js Backend Development Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Node.js Backend Development Bootcamp?
Предыдущий опыт не требуется. Node.js Backend Development Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Асинхронный JavaScript и цикл событий»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Node.js Backend Development Bootcamp?
Да. Каждый урок Node.js Backend Development Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в Node.js и NPM
- Модульная система Node.js
- Асинхронный JavaScript и цикл событий
- Работа с файловой системой и потоками