منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
پشتیبانیانتشار محتوا
CODEX/سطح ۲؛ برنامه‌نویسی ناهمگامjavascriptPromise

Promise در جاوااسکریپت

Promise در جاوااسکریپت چیست؟ وضعیت‌های pending، fulfilled و rejected، ترتیب اجرای then و مدیریت خطا با catch را با مثال و خروجی بررسی کنید.

مفهوم به زبان ساده

Promise نتیجه‌ای را نمایندگی می‌کند که ممکن است هنوز آماده نباشد. سه وضعیت دارد: pending، fulfilled و rejected. پس از موفق‌شدن یا ردشدن، وضعیت نهایی آن تغییر نمی‌کند.

با then به نتیجهٔ موفق واکنش می‌دهید و با catch ردشدن را مدیریت می‌کنید. Promise تضمین نمی‌کند کار موفق شود و به‌تنهایی به معنی اجرای کار در یک نخ جداگانه نیست.

حتی وقتی Promise.resolve نتیجهٔ آماده می‌سازد، callbackِ then بعد از پایان کد همگام فعلی اجرا می‌شود. به همین دلیل در مثال، now زودتر از ready چاپ می‌شود. برای نوشتن ادامهٔ همین منطق با ساختاری خطی‌تر، #async-await را ببینید.

کجا به کار می‌آید؟

  • دریافت نتیجهٔ درخواست شبکه و مدیریت خطای آن
  • زنجیره‌کردن کارهایی که هر کدام به نتیجهٔ قبلی وابسته‌اند

از تعریف تا یک مثال واقعی

javascript
const result = Promise.resolve("ready");
result.then(value => console.log(value));
console.log("now");
خروجی مورد انتظار
now
ready
کد را تغییر دهید و نتیجه را ببینید.

این مثال چطور کار می‌کند؟

  1. Promise.resolve("ready") یک Promise موفق با مقدار ready می‌سازد.

  2. then واکنش به نتیجه را ثبت می‌کند؛ callback فوراً اجرا نمی‌شود.

  3. ابتدا now و سپس ready در کنسول دیده می‌شود.

اشتباه رایج

اگر داخل then کار ناهمگام دیگری آغاز می‌کنید و زنجیره به نتیجهٔ آن نیاز دارد، Promise آن کار را return کنید؛ وگرنه زنجیره منتظرش نمی‌ماند.

این را به خاطر بسپارید

نتیجهٔ آینده را زنجیره کنید و مسیر خطا را هم مانند مسیر موفقیت در نظر بگیرید.

بازگشت به نقشهٔ مفاهیم
یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان