Sobes.tech
Middle

Афзалати шакли синтаксикии шакар, ки дар шакли async/await пешниҳод шудааст, дар муқоиса бо Promise чист?

sobes.tech AI

Ҷавоб аз AI

Афзалияти асосии async/await нисбат ба promises "пурра" ин аст, ки имкон медиҳад, ки коди асинхрониро дар услуби бештар синхронӣ ва хонданӣ нависед.

Мувофиқат:

Ҷиҳат Promise async/await
хонданӣ Мумкин аст ба "зангирҳои promises" оварда расонад. Имкон медиҳад, ки кодро қариб ҳамчун синхрон нависед.
Ҳамкорӣ бо хатоҳо .catch()-ро истифода мебарад. Стандарти try...catch-ро истифода мебарад.
пайдарпайӣ Ниёз дорад ба пайвастагии эҳтиётӣ ё Promise.all. Аён ва осон барои хондан.
Дебаггирӣ Мумкин аст мушкилтар бошад, ки пайравӣ кунед. Близ ба дебаггери коди синхронӣ.
Шумораи синтаксисӣ Бисёр .then(), .catch(). Камтар boilerplate код.

Масалан бо promises:

// Масалан бо Promise
fetch('user.json')
  .then(response => response.json())
  .then(user => fetch(`https://api.github.com/users/${user.name}`))
  .then(githubUser => githubUser.json())
  .then(githubUser => {
    // Коркарди маълумот
    console.log(githubUser);
  })
  .catch(error => {
    console.error('Хатогӣ:', error);
  });

Масалан бо async/await:

// Масалан бо async/await
async function getUserData() {
  try {
    const userResponse = await fetch('user.json');
    const user = await userResponse.json();

    const githubResponse = await fetch(`https://api.github.com/users/${user.name}`);
    const githubUser = await githubResponse.json();

    // Коркарди маълумот
    console.log(githubUser);
  } catch (error) {
    console.error('Хатогӣ:', error);
  }
}

getUserData();

Ҳамин тавр, async/await promises-ро иваз намекунад, балки як шакли синтаксистӣ дар болои онҳо аст, ки амалиётҳои асинхронро бештар интуитивӣ ва осонтар нигоҳдоштанро таъмин мекунад.