Sobes.tech
Junior

რა განსხვავებაა async/await და Promise-ს შორის?

sobes.tech AI

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

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

მახასიათებელი async/await Promise
სინტაქსი უფრო ჰგავს სინქრონულ კოდს. იყენებს მეთოდებს .then(), .catch(), .finally().
წასაკითხობა ხშირად უფრო მაღალი, განსაკუთრებით ჯაჭვებში. შეიძლება გამოიწვიოს "Callback hell" რთულ ჯაჭვებში.
შეცდომების მართვა იყენებს სტანდარტულ try...catch. იყენებს .catch() ან მეორე არგუმენტს .then().
პარალელიზმი საჭიროებს გამოხატულ გამოყენებას Promise.all() ან Promise.allSettled(). შეიძლება იყოს უფრო გამოხატული, მაგრამ ნაკლებად წასაკითხი async/await-ის გარეშე.
// მაგალითი Promise-ით
function getDataPromise() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('მიღებული მონაცემები');
    }, 1000);
  });
}

getDataPromise()
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });
// მაგალითი async/await-ით
async function getDataAsync() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('მიღებული მონაცემები');
    }, 1000);
  });
}

async function processData() {
  try {
    const data = await getDataAsync();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

processData();