end

Следващ урок: Грешки Към следващия урок →

Урок: Асинхронен JavaScript Повторение

§ Асинхронен код в JavaScript. Какво е callback, promise и как да работим с async/await

На практика, каквато и задача да решаваме с JavaScript е почти сигурно, че ще стигнем до някакъв вид асинхронен код. В този урок ще си поговорим за callbacks, promises и за async/await.

Асинхронен код в JavaScript е код, който се изпълнява независимо от останалата част на нашето приложение. Това означава, че асинхронните функции работят паралелно с други части от кода, без да чакат. В JavaScript, асинхронните функции се използват често за заявки към външни ресурси. Езика предлага няколко варианта за справяне с асихронност.

  • Callback в JavaScript е функция, която се използва като аргумент на друга функция и се изпълнява, когато асихронния процес приключи. Например:
function getData(url, callback) {
  // Код за извличане на данни от указания URL
  // ...
  // След като данните са извлечени, изпълняваме callback функцията
  callback(data);
}
  • Promise в JavaScript е обект, който представлява бъдещ резултат от асинхронна операция. Тоест, promise позволява програмиста да напише код, който ще се изпълни, когато асинхронната операция завърши успешно или неуспешно. Разработчика посочва какво да се случи при успешно или неуспешно изпълнение на операцията, без да е нужно да използва комплексни управляващи структури, като например специални цикли или вложени функции.
function getDataFromServer() {
  return new Promise((resolve, reject) => {
    // Асихронния код се помества тук.
    // При успех извикваме resolve. При неуспех reject.
  });
}

const dataPromise = getDataFromServer();
dataPromise.then((data) => {
  // Код, който ще се изпълни след края на операцията
});
  • async/await е синтаксис, който позволява писането на асинхронен код по по-прост и четим начин. Това се постига като се използва ключовата дума async пред функцията, която съдържа асинхронен код, и ключовата дума await пред извикването на асинхронната функция. Това позволява кода да се "изпълнява последователно", като се чака за изпълнението на всяка асинхронна функция, преди да продължим с останалата част от кода.
async function getData() {
  // getDataFromServer е функция, която връща promise
  const data = await getDataFromServer(); // функцията е паузирана тук
  // data съдържа резултата от успешно изпълнената
  // асихронна функция.
}
questionnaire

Практика

Практиката е най-бързия начин да усвоиш знания трайно. Подготвил съм ти малка задача свързана с урока.

Практика
discussion

Материали

Материали свързани с урока:
Файлове към урока
Callback function (MDN)
Using promises (MDN)
Introducing asynchronous JavaScript (MDN)

Материали

Следва: Грешки(10:27)

Към урока →