Promise یک آبجکت هست که یک تسک Asynchronous رو توی جاواساکریپت اجرا می کنه. این آبجکت تو تابع داره resolve و reject که این آبجکت گارانتی میکنه که یکی از این دو قطعا اجرا میشه. بخاطر همین بهش میگن Promise. یعنی گارانتی میکنه که این تسک یا موفق میشه یا نه و خارج از این دو حالت نیست.
با صدا زدن یه Promise شما از دو تابع میتونید استفاده کنید. then و catch اولی وقتی که تسک موفق بشه خروجی رو میگیره و دومی وقتی که
1 2 3 4 5 6 7 8 9 10 11 |
const promise = new Promise((resolve, reject) => { console.log('Promise started...'); setTimeout(() => { resolve('Task completed successfully!'); // reject('Oops! Something went wrong.'); // Uncomment to test rejection }, 2000); // Simulates a 2-second delay }); promise .then(result => console.log(result)) // Handles success .catch(error => console.error(error)); // Handles error |
توی کد بالا موارد زیر اتفاق میوفته:
- Promise درجا اجرا میشه
- دو ثانیه برنامه می ایستد
- resolve اجرا میشه
- then اجرا میشه
اگر بجای resolve تابع reject رو اجرا کنیم. توی مرحله 4 بجای then تابع catch اجرا میشه.