Junior
Какви методи за работа с асинхронен код знаете?
sobes.tech AI
Отговор от AI
- Callback функции: Предаване на функция като аргумент към друга функция, която ще бъде извикана след завършване на асинхронна операция. Могат да доведат до "callback hell".
- Promises (Обещания): Обекти, които представляват окончателното завършване (или неуспех) на асинхронна операция и нейното резултатно стойност. Предоставят по-структурирано управление на асинхронността.
// Пример за използване на promise fetch('/api/data') .then(response => response.json()) // Обработка на успешен отговор .then(data => console.log(data)) // Обработка на получените данни .catch(error => console.error('Грешка при извличане на данни:', error)); // Обработка на грешка - Async/await: Синтактичен захар над promises, който позволява писане на асинхронен код в по-синхронен стил, което го прави по-лесен за четене и отстраняване на грешки.
// Пример за използване на async/await async function fetchData() { try { const response = await fetch('/api/data'); // Изчакване на promise if (!response.ok) { throw new Error(`HTTP грешка! статус: ${response.status}`); } const data = await response.json(); // Изчакване на promise console.log(data); } catch (error) { console.error('Грешка при извличане на данни:', error); // Обработка на грешка } } fetchData(); - Генератори (Generators): Могат да се използват за работа с асинхронност в съчетание с библиотеката
coили ръчно, въпреки чеasync/awaitстава по-разпространен.
Сравнение на основните подходи:
| Метод | Предимства | Недостатъци |
|---|---|---|
| Callbacks | Прост в началото | "Callback hell", сложност при обработка на грешки |
| Promises | По-добра четливост, обработка на грешки | Могат да станат обемисти при вериги от операции |
| Async/await | Висока четливост, прилича на синхронен код | Изисква поддръжка на средата (async/await) |