Sobes.tech
Junior

Ի՞նչ եղանակներ եք ճանաչում ասինխրոնային կոդով աշխատելու համար։

sobes.tech AI

Պատասխան AI-ից

  • Callback-функцыі: Перадача функцыі ў якасці аргумента іншай функцыі, якая будзе выклікана пасля завяршэння асінхроннай аперацыі. Могуць прывесці да "callback hell".
  • Промисы (Promises): Аб'екты, якія прадстаўляюць канчатковае завяршэнне (ці няўдачу) асінхроннай аперацыі і яе выніковае значэнне. Забяспечваюць больш структураванае кіраванне асінхроннасцю.
    // Прыклад выкарыстання проміса
    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 асяроддзя