Sobes.tech
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)