Skip to content

Commit b98fd7a

Browse files
authored
Update article.md
1 parent 567a72e commit b98fd7a

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

2-ui/99-ui-misc/03-event-loop/article.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ count();
8181
حتی ممکن است مرورگر اخطار «اسکریپت خیلی طولانی است» را نشان دهد.
8282

8383
بیایید کار را با استفاده از تماس‌های `setTimeout` تودرتو تقسیم کنیم:
84+
8485
```js run
8586
let i = 0;
8687

@@ -154,6 +155,7 @@ count();
154155
این ساده است: همانطور که به یاد دارید، برای بسیاری از تماس‌های تودرتوی `setTimeout`، حداقل تاخیر 4 میلی‌ثانیه در مرورگر وجود دارد. حتی اگر `0` را تنظیم کنیم، `4 میلی‌ثانیه` (یا کمی بیشتر) است. بنابراین هرچه زودتر آن را برنامه ریزی کنیم - سریعتر اجرا می شود.
155156

156157
در نهایت، ما یک کار تشنه CPU را به بخش‌هایی تقسیم کرده‌ایم - اکنون رابط کاربری را مسدود نمی‌کند. و زمان اجرای کلی آن خیلی بیشتر نیست.
158+
157159
## Use case 2: progress indication
158160

159161
یکی دیگر از مزایای تقسیم وظایف سنگین برای اسکریپت های مرورگر این است که می توانیم نشانه پیشرفت را نشان دهیم.
@@ -272,6 +274,7 @@ alert("code");
272274
اگر بخواهیم یک تابع را به صورت ناهمزمان (بعد از کد فعلی) اجرا کنیم، اما قبل از رندر شدن تغییرات یا مدیریت رویدادهای جدید، می‌توانیم آن را با `queueMicrotask` زمان‌بندی کنیم.
273275

274276
در اینجا یک مثال با "counting progress bar" وجود دارد، مشابه آنچه قبلا نشان داده شده است، اما از `queueMicrotask` به جای `setTimeout` استفاده شده است. می بینید که در انتها رندر می شود. درست مانند کد همزمان:
277+
275278
```html run
276279
<div id="progress"></div>
277280

@@ -324,6 +327,7 @@ alert("code");
324327
هیچ رابط کاربری یا مدیریت رویداد شبکه بین ریزکارها وجود ندارد: آنها بلافاصله یکی پس از دیگری اجرا می شوند.
325328

326329
بنابراین ممکن است کسی بخواهد که `queueMicrotask` را برای اجرای یک تابع به صورت ناهمزمان، اما در حالت محیطی بخواهد.
330+
327331
```smart header="Web Workers"
328332
برای محاسبات سنگین طولانی که نباید حلقه رویداد را مسدود کند، می‌توانیم از [Web Workers](https://html.spec.whatwg.org/multipage/workers.html) استفاده کنیم.
329333

0 commit comments

Comments
 (0)