Middle
Ի՞նչ է async/await ձևով ներկայացված սինտակսիկ շաքարի առավելությունը համեմատած Promise-ի հետ։
sobes.tech AI
Պատասխան AI-ից
Ասինխրոն async/await-ի հիմնական առավելությունը՝ այն է, որ այն հնարավորություն է տալիս գրել ասինխրոնային կոդը ավելի սինխրոն և ընթեռնելի ոճով:
Համեմատություն:
| Աспեկտ | Promise |
async/await |
|---|---|---|
| Ընթեռնելիություն | Կարող է հանգեցնել "պրոմիսների շղթայի". | Հնարավոր է գրել կոդը գրեթե ինչպես սինխրոն։ |
| Հետագամշակումը | Օգտագործում է .catch(). |
Օգտագործում է ստանդարտ try...catch. |
| Հետևողականություն | Պահանջում է ուշադիր շղթայակապում կամ Promise.all. |
Մասնակի և հեշտ ընթեռնելի։ |
| Դետալների հետևում | Կարող է ավելի բարդ լինել հետևել հոսքին. | մոտ է սինխրոն կոդի դետալներին։ |
| Սինտակսիսային աղմուկ | Շատ .then(), .catch(). |
Փոքր բուիլդերային կոդ։ |
Օրինակ պրոմիսներով:
// Օրինակ 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 չի փոխարինում պրոմիսներին, այլ հանդիսանում է սինտակսիսային շակար պրոմիսների վրա, դարձնելով ասինխրոնային օպերացիաները ավելի ինտուիտիվ և հեշտ պահպանվող։