بعد از این درس چه کاری میتوانی انجام بدهی؟
- Node کار I/O را asynchronous هماهنگ میکند؛ JavaScript طولانی روی thread اصلی event loop را عقب میاندازد.
- نمونه را اجرا کنی و نتیجه را پیش از تغییر حدس بزنی
- یک تغییر کوچک بدهی و اثرش را در مرورگر توضیح بدهی
- خطای این درس را با DevTools یا اعتبارسنج پیدا و اصلاح کنی
اگر نتیجه عجیب بود، اول همان عنصر را در DevTools انتخاب کن؛ ساختار و قانونهای واقعاً اعمالشده از حدسزدن سریعتر راه را نشان میدهند.
چرا مهم است؟ Node کار I/O را asynchronous هماهنگ میکند؛ JavaScript طولانی روی thread اصلی event loop را عقب میاندازد.
اولین تمرین تو: یک timeout برای سرویس بیرونی و AbortSignal اضافه کن. پیش از تازهکردن صفحه، نتیجه را در یک جمله حدس بزن و بعد حدست را با مرورگر مقایسه کن.
از یک مثال کوچک شروع کن
Node کار I/O را asynchronous هماهنگ میکند؛ JavaScript طولانی روی thread اصلی event loop را عقب میاندازد. نمونه کوتاه زیر را در فایل «src/load-dashboard.js» بنویس و صفحه را تازه کن. بعد از دیدن نتیجه، سراغ تغییر پیشنهادی برو؛ هدف حفظکردن نشانهها نیست، باید بفهمی کدام خط چه اثری روی صفحه گذاشت.
۱. نمونه را خودت تایپ کن
فایل را ذخیره کن و نتیجه را با انتظار این درس مقایسه کن.
۲. تغییر درس را انجام بده
یک timeout برای سرویس بیرونی و AbortSignal اضافه کن.
۳. خطا را عمداً ببین
استفاده از readFileSync داخل route پرتردد، همه درخواستها را تا پایان خواندن معطل میکند. سپس DevTools یا HTML Validator را باز کن و فقط همان علت را اصلاح کن.
اگر نتیجه عجیب بود، اول همان عنصر را در DevTools انتخاب کن؛ ساختار و قانونهای واقعاً اعمالشده از حدسزدن سریعتر راه را نشان میدهند.
سه قطعهای که باید بفهمی
Event Loop و Async I/O؛ سرور را مسدود نکن
Node کار I/O را asynchronous هماهنگ میکند؛ JavaScript طولانی روی thread اصلی event loop را عقب میاندازد.
نتیجه قابل مشاهده
فایل و فهرست مستقل همزمان انتظار کشیده میشوند و event loop با readFileSync متوقف نمیشود.
نشانه خطا
استفاده از readFileSync داخل route پرتردد، همه درخواستها را تا پایان خواندن معطل میکند.
یک محاسبه سنگین یا خواندن همگام فایل، پاسخ همه درخواستهای دیگر را کند کرده است.
فرض کن یک محاسبه سنگین یا خواندن همگام فایل، پاسخ همه درخواستهای دیگر را کند کرده است. صفحه باز میشود، اما هنوز این بخش برای کاربر درست و قابل فهم نیست. در این درس فقط همان قسمت را میسازیم تا رابطه کد و نتیجه گم نشود.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
بررسی ساختار تمرین
این صفحه کامپایلر کامل Node.js نیست؛ ساختار تمرین را صادقانه بررسی میکند و خروجی مورد انتظار را نشان میدهد. برای اجرای کامل به محیط رسمی همان زبان نیاز است.
یک بخش را تغییر بده و دکمه بررسی را بزن.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
یک timeout برای سرویس بیرونی و AbortSignal اضافه کن. پیش از تازهکردن صفحه، نتیجه را در یک جمله حدس بزن و بعد حدست را با مرورگر مقایسه کن.
این سه اشتباه را انجام نده
استفاده از readFileSync داخل route پرتردد، همه درخواستها را تا پایان خواندن معطل میکند.
تغییر چند بخش همزمان و نامشخصشدن علت نتیجه
اعتماد به ظاهر یک اندازه صفحه و بررسینکردن موبایل یا صفحهکلید
با 5 سؤال مطمئن شو که مفهوم را گرفتهای
در این درس چه چیزی باید در مرورگر دیده شود؟
چرا فقط یک بخش را تغییر میدهیم؟
اولین سرنخ خطای این درس چیست؟
بعد از تغییر کد چه کاری مفید است؟
چه زمانی آماده درس بعدی هستی؟
فهمیدی، تغییر دادی، نتیجه را توضیح دادی؟
فقط در این صورت درس را کامل کن و سراغ مرحله بعد برو.