Promises

در جاوااسکریپت، Promise یک شیء است که نشان‌دهنده نتیجه آینده یک عملیات غیرهمزمان می‌باشد.
Promiseها جایگزین Callbackها هستن و به مدیریت بهتر کدهای غیرهمزمان کمک می‌کنن.

🔹 وضعیت‌های Promise

یک Promise سه حالت ممکن داره:

  1. Pending → در حال انجام

  2. Fulfilled (Resolved) → با موفقیت کامل شده

  3. Rejected → با خطا مواجه شده

🔹 ساخت Promise

let promise = new Promise((resolve, reject) => { let success = true; if(success) { resolve("Operation succeeded"); } else { reject("Operation failed"); } });

🔹 استفاده از then() و catch()

promise .then(result => console.log(result)) // وقتی موفق باشه .catch(error => console.log(error)); // وقتی خطا باشه

📌 خروجی اگر success = true:

Operation succeeded

🔹 مثال عملی با setTimeout

let asyncTask = new Promise((resolve, reject) => { setTimeout(() => { resolve("Task completed after 2 seconds"); }, 2000); }); asyncTask.then(result => console.log(result));

📌 خروجی بعد از 2 ثانیه:

Task completed after 2 seconds

🔹 متدهای مفید Promise

1. Promise.all()

منتظر می‌مونه تا همه Promiseها کامل بشن و نتایجشون رو به صورت آرایه برمی‌گردونه.

Promise.all([ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3) ]).then(results => console.log(results)); // [1, 2, 3]

2. Promise.race()

به محض اینکه یکی از Promiseها کامل شد، نتیجه اون رو برمی‌گردونه.

Promise.race([ new Promise(resolve => setTimeout(() => resolve("First"), 1000)), new Promise(resolve => setTimeout(() => resolve("Second"), 2000)) ]).then(result => console.log(result)); // "First"

✅ خلاصه

  • Promise نمایانگر نتیجه آینده یک عملیات غیرهمزمان است.

  • سه حالت: Pending, Fulfilled, Rejected

  • متدهای اصلی: then(), catch(), finally()

  • متدهای کمکی: Promise.all(), Promise.race()

  • جایگزین مناسب برای Callbackها و جلوگیری از Callback Hell