Sobes.tech
Junior

Фарқияти байни async/await ва Promise чист?

sobes.tech AI

Ҷавоб аз AI

async/await як шакари синтаксисӣ дар болои promises мебошад. Он имкон медиҳад, ки коди асинхрониро дар услуби бештар хондашаванда ва монанд ба синхрон нависед, бо истифода аз калимаҳои калидии async барои функсияҳое, ки дар онҳо await истифода мешаванд, барои интизор шудан ба ҳаллу фасли promises. Promises объектҳое мебошанд, ки анҷоми ниҳоии (ё нокомии) як амалиёти асинхронӣ ва арзиши натиҷавии онро намояндагӣ мекунанд.

Хусусият 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();