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-ро иваз намекунад, балки як шакли синтаксистӣ дар болои онҳо аст, ки амалиётҳои асинхронро бештар интуитивӣ ва осонтар нигоҳдоштанро таъмин мекунад.