Какви начини за работа с асинхронен код познаваш?
sobes.tech AI
Отговор от AI
Обратни повиквания, Promises, async/await.
Обратните повиквания: функции, предавани като аргументи на други функции, които се извикват след завършване на асинхронна операция.
Promises: обекти, които предлагат по-удобен начин за управление на асинхронността в сравнение с обратните повиквания. Имат състояния pending, fulfilled и rejected.
// Пример за Promise
function asyncOperation() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Операцията е успешно завършена!');
}, 1000);
});
}
asyncOperation()
.then(result => console.log(result))
.catch(error => console.error(error));
async/await: синтактичен захар над Promises, който прави асинхронния код по-подобен на синхронен и подобрява четливостта му.
// Пример за async/await
async function performAsyncOperation() {
try {
const result = await asyncOperation();
console.log(result);
} catch (error) {
console.error(error);
}
}
performAsyncOperation();
Сравнение на методите:
| Метод | Четливост / Поддържане | Обработка на грешки | Контрол на потока |
|---|---|---|---|
| Обратни повиквания | По-малко четливи (Callback Hell) | Трудно | Трудно |
| Promises | Подобрени | Удобно (.catch) | Удобно (.then, .catch) |
| async/await | Най-добри | Удобно (try...catch) | Удобно (await) |
Най-препоръчваният метод в съвременните Node.js приложения е използването на async/await поради неговата четливост и удобство. Promises остават важен инструмент, особено на по-ниско ниво на реализация. Обратните повиквания се използват в остарял код или за нискоуровневи операции в ядрото на Node.js.