Junior
Kāda ir atšķirība starp async/await un Promise?
sobes.tech AI
Atbilde no AI
async/await ir sintaktiska cukura pārpratums virs solījumiem. Tas ļauj rakstīt asinhrono kodu skaidrākā, sinhroniskā stilā, izmantojot atslēgvārdus async funkcijām, kuru iekšpusē tiek izmantots await solījumu gaidīšanai. Solījumi ir objekti, kas pārstāv galīgo asinhronas operācijas pabeigšanu (vai kļūmi) un tās rezultātu.
| Īpašība | async/await | Promise |
|---|---|---|
| Sintakse | Līdzīgāka sinhroniskajam kodam. | Izmanto .then(), .catch(), .finally() metodes. |
| Lasāmība | Bieži augstāka, īpaši ķēdēs. | Var izraisīt "Callback hell" sarežģītās ķēdēs. |
| Kļūdu apstrāde | Izmanto standarta try...catch. |
Izmanto .catch() vai otro .then() argumentu. |
| Paralēlisms | Prasa skaidru Promise.all() vai Promise.allSettled() izmantošanu. |
Var būt skaidrāks, bet mazāk lasāms bez async/await. |
// Piemērs ar Promise
function getDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dati saņemti');
}, 1000);
});
}
getDataPromise()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// Piemērs ar async/await
async function getDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Dati saņemti');
}, 1000);
});
}
async function processData() {
try {
const data = await getDataAsync();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();