Promise нь ирээдүйд гүйцэтгэгдэх үйлдлийн үр дүнг төлөөлөх объект юм.
Жишээлбэл: Сервер рүү хүсэлт илгээх, файл унших, өгөгдлийн сан руу хандах гэх мэт.
const promise = new Promise((resolve, reject) => {
// Асинхрон үйлдэл
if (success) {
resolve(result);
} else {
reject(error);
}
});
Promise нь дараах 3 төлөвтэй байж болно:
promise
.then(result => {
// Амжилттай биелсэн үед
console.log('Амжилттай:', result);
})
.catch(error => {
// Алдаа гарсан үед
console.log('Алдаа:', error);
})
.finally(() => {
// Үргэлж ажиллана
console.log('Үйлдэл дууслаа');
});
Async/Await нь Promise-тэй ажиллахад илүү энгийн, ойлгомжтой синтакс юм.
async function fetchResult() {
try {
const result = await sendRequestToServer();
return result;
} catch (error) {
console.error('Алдаа гарлаа:', error);
}
}
// Promise хэлбэрээр
fetch('https://api.example.com/data')
.then(result => result.json())
.then(data => console.log(data))
.catch(error => console.error(error));
// Async/Await хэлбэрээр
async function fetchData() {
try {
const result = await fetch('https://api.example.com/data');
const data = await result.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
Алдааг хоёр аргаар боловсруулж болно:
// Promise-н алдаа
promise.catch(error => {
console.error('Алдаа гарлаа:', error);
});
// Async/Await алдаа
async function handleErrors() {
try {
await errorProneAction();
} catch (error) {
console.error('Алдаа гарлаа:', error);
}
}
Promise болон Async/Await нь:
Асуулт байна уу?