پرامیس promis و then(res) در تابع ناهمزمان جاوا اسکریپت چیست؟

این عبارت:

`.then(res)`

یک بخش از پرامیس Promise در جاوااسکریپت (JavaScript) است. در اینجا به شرح آن پرداخته می‌شود:

1. پرامیس Promise:

پرامیس `Promise` یک الگوی طراحی برای کنترل جریان اجرای کدهای ناهمزمان (asynchronous) در جاوااسکریپت است. یک پرامیس Promise به صورت تعدادی از وضعیت‌ها می‌تواند باشد، که این وضعیت‌ها عبارت‌اند از:

-پندینگ Pending (در حال انجام): وضعیت اولیه که پرامیس Promise هنوز اجرا نشده است.

-فول فیلد Fulfilled (تحقق یافته): وضعیتی که پرامیس Promise با موفقیت اجرا شده و یک مقدار (معمولاً نتیجه یک عملیات ناهمزمان) را ارائه می‌دهد.

-ریجکتد Rejected (رد شده): وضعیتی که در آن پرامیس Promise با یک خطا روبرو شده و دلیل خطا (reject reason) را ارائه می‌دهد.


2. `.then()`:

این عبارت: `.then()` یک متد از پرامیس Promise است که از آن برای اضافه کردن یک callback برای زمانی که پرامیس به وضعیت Fulfilled می‌رسد، استفاده می‌شود. این callback به عنوان آرگومان به متد then ارسال می‌شود و این callback به مقدار تحقق یافته یا resolve شده (مقدار بازگشتی در حالت Fulfilled) دسترسی دارد.

در کد زیر:

 loadSections().then((res) => {
      setSections(res);
   });

"زمانی که `loadSections` اجرا شده و پرامیس به وضعیت Fulfilled می‌رسد (با مقدار resolve شده `res`، که احتمالاً یک مقدار از API است)، تابعی که به `.then` ارسال شده است (که یک callback است و `res` را به عنوان آرگومان دریافت می‌کند) را اجرا میشود و مقدار `res` را به عنوان مقدار جدید برای `setSections` قرار میدهد.

مزایا و ویژگی‌های Promises عبارتند از:

  • انجام عملیات ناهمزمان و بدون تاثیر منفی بر اجرای دیگر کدها (non-blocking).
  • قابلیت ردیابی و استفاده از توابع then و catch برای دسترسی به نتایج موفقیت‌آمیز یا خطا.
  • امکان استفاده از Promise.all برای همزمانی از چندین Promise و انتظار تا همه تکمیل شوند.

برای درک عمیق‌تر، به مستندات MDN در مورد Promises مراجعه کنید.