async/await در Node.js چطور کار میکنه؟
هر تابع async در Node.js همیشه یه Promise برمیگردونه، حتی اگه داخلش فقط یه عدد ساده return کنه. کلمهکلیدی await باعث میشه تابع متوقف بشه، ولی کل پروسه به کارش ادامه میده. V8 وضعیت تابع رو روی heap ذخیره میکنه و بعد از settle شدن Promise، اجراش رو از همون جا ادامه میده. ترتیب اجرا، مدیریت خطا، و مصرف حافظه همه به این مکانیزم وابستهن.
این محتوا بهصورت خودکار با استفاده از هوش مصنوعی تولید شده است. بررسی نهایی آن پیش از استفاده توصیه میشود و مسئولیت استفاده از آن بهعهده کاربر است. برای مطالعه متن اصلی خبر،اینجا را کلیک کنید
خلاصهٔ کاملتر
هر تابعی که با async تعریف بشه، قراردادش عوض میشه: دیگه هر چی return کنه، خروجیاش یه Promiseه. چه عدد ۴۲ برگردونه، چه خطا پرتاب کنه، چه چند تا عملیات شبکه داشته باشه — فرقی نمیکنه. این موضوع یه دسته از باگهای رایج رو توضیح میده؛ مثلاً وقتی یه async callback به Array.map() میدی، یه آرایه از Promiseها تحویل میگیری، نه نتایج واقعی.
وقتی await توی تابع اجرا میشه، فقط همون تابع متوقف میشه — نه کل برنامه. V8 وضعیت فعلی اجرا (متغیرهای محلی، موقعیت bytecode) رو روی heap ذخیره میکنه، بعد کنترل رو به caller برمیگردونه. بعداً وقتی Promise مربوطه settle شد، یه PromiseReactionJob در صف microtask قرار میگیره و V8 تابع رو از همون نقطهای که متوقف شده بود ادامه میده. به همین دلیله که در این مثال خروجی 1، 2، 4، 3 میشه:
خلاصهٔ کاملتر این خبر رو میتونی با داشتن اشتراک ویژه بخونی!
اشتراک رایگان
- دسترسی به خلاصهٔ کوتاه خبر
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- عدم نمایش تبلیغات
اشتراک ویژه
- دسترسی به خلاصهٔ کوتاه خبر
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- عدم نمایش تبلیغات




