Sobes.tech
Junior

მითხარი JavaScript-ში async/await-ის კონსტრუქციის შესახებ.

sobes.tech AI

პასუხი AI-სგან

async/await — ეს არის სინტაქსური შაქარი პრომისებზე, რომელიც განკუთვნილია ასინქრონული კოდის უფრო მარტივ დაწერისთვის, რომელიც გამოიყურება სინქრონულად.

ფუნქცია, რომელიც მონიშნულია სიტყვით async, ყოველთვის აბრუნებს პრომისს. შიგნით async ფუნქციაში შეიძლება გამოიყენოთ სიტყვა await.

ოპერატორი await გამოიყენება პრომისის გამოძახების წინ. ის აჩერებს async ფუნქციის შესრულებას მანამ, სანამ პრომისი არ შესრულდება (resolved) ან უარყოფილი (rejected). პრომისის შესრულების შედეგი (წარმატების მნიშვნელობა ან შეცდომა) დაბრუნდება ოპერატორ await-ის მიერ.

თუ პრომისი, რომლის წინაშეც დგას await, უარყოფილია, ეს გამოიწვევს გამონაკლისს, რომელსაც შეიძლება იჭერით try...catch ბლოკის გამოყენებით.

// მაგალითი async/await-ის გამოყენების
async function fetchData() {
  try {
    // ველით ასინქრონული ოპერაციის შესრულებას (მაგალითად, API-ს მოთხოვნას)
    const response = await fetch('https://api.example.com/data');
    // პასუხის პარსვა JSON-ში
    const data = await response.json();
    // მიღებული მონაცემების გამოტანა
    console.log(data);
  } catch (error) {
    // ვიჭერთ შესაძლო შეცდომას
    console.error('შეცდომა მონაცემების მიღებისას:', error);
  }
}

// ვიძახით async ფუნქციას
fetchData();

// async ფუნქცია, რომელიც აბრუნებს პრომისს
async function getValue() {
  return 10; // ეს ავტომატურად არის შეფუთული Promise.resolve(10)
}

getValue().then(value => console.log(value)); // გამოიტანს 10

async/await-ის უპირატესობები:

  • კოდის წაკითხვა: ასინქრონული კოდი უფრო ჰგავს სინქრონულს
  • შეცდომების მართვა: უფრო კომფორტულია გამოიყენოთ სტანდარტული try...catch ბლოკები.
  • მცირე შთაბეჭდილება nesting-ის: თავიდან აიცილებს "კოლბეკების ჯოჯოვს" ან გრძელ სერიულობას .then()-ების.

უნდა გახსოვდეთ, რომ await შეიძლება გამოყენებულ იქნას მხოლოდ async ფუნქციებში.