امیدوارم به بهتر شدن کمک کنم. در تلگرام و اینستاگرام پیام بفرست، SeyedAhmaddv - ارشد نرم افزار، توسعه دهنده ری اکت و نکست
پرامیس 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 مراجعه کنید.
مطلبی دیگر از این انتشارات
معرفی عملگر «انتساب ایمن» در ECMAScript جایگزین بلوک های Try-Catch
مطلبی دیگر از این انتشارات
تبدیل نوع (Type Coercion)
مطلبی دیگر از این انتشارات
استراتژی های فرانت اند: فریمورک (سکو) یا جاوا اسکریپت خالص؟