Junior
Koje načine rada sa asinhronim kodom poznajete?
sobes.tech АИ
Одговор од АИ
- 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) |