Skip to content

Commit 06cc681

Browse files
committed
finished translating
1 parent 716ab4d commit 06cc681

File tree

1 file changed

+41
-41
lines changed

1 file changed

+41
-41
lines changed

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

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Conceptul *event loop* este foarte simplu. Există o buclă fără sfârșit, î
1313

1414
Algoritmul general al motorului:
1515

16-
1. În timp ce există sarcini:
16+
1. În timp ce sunt sarcini:
1717
- le execută, începând cu cea mai veche sarcină.
1818
2. Doarme până când apare o sarcină, apoi treceți la 1.
1919

@@ -115,7 +115,7 @@ O singură execuție a lui `count` face o parte din treabă `(*)`, și apoi se r
115115

116116
Acum, dacă apare o nouă sarcină secundară (de exemplu, evenimentul `onclick`) în timp ce motorul este ocupat cu execuția părții 1, aceasta este pusă la coadă și apoi se execută când partea 1 s-a terminat, înainte de partea următoare. Revenirile periodice la event loop între execuțiile `count` oferă suficient "aer" pentru ca motorul JavaScript să facă altceva, să reacționeze la alte acțiuni ale utilizatorului.
117117

118-
Lucrul notabil este că ambele variante -- cu și fără diviziunea muncii prin `setTimeout` -- sunt comparabile ca viteză. Nu există o diferență prea mare în timpul total pentru numărare.
118+
Lucrul notabil este că ambele variante -- cu și fără diviziunea muncii prin `setTimeout` -- sunt comparabile ca viteză. Nu este o diferență prea mare în timpul total pentru numărare.
119119

120120
Pentru a le face mai apropiate, să facem o îmbunătățire.
121121

@@ -152,7 +152,7 @@ Dacă o rulezi, este ușor de observat că durează semnificativ mai puțin timp
152152

153153
De ce?
154154

155-
Este simplu: după cum vă amintiți, există o întârziere minimă în browser de 4 ms pentru multe apeluri nested `setTimeout`. Chiar dacă setăm `0`, este `4ms` (sau un pic mai mult). Deci cu cât programăm mai devreme - cu atât mai repede se execută.
155+
Este simplu: după cum vă amintiți, este o întârziere minimă în browser de 4 ms pentru multe apeluri nested `setTimeout`. Chiar dacă setăm `0`, este `4ms` (sau un pic mai mult). Deci cu cât programăm mai devreme - cu atât mai repede se execută.
156156

157157
În cele din urmă, am împărțit în părți o sarcină flămândă de CPU - acum nu blochează interfața cu utilizatorul. Iar timpul său total de execuție nu este cu mult mai mare.
158158

@@ -236,17 +236,17 @@ menu.onclick = function() {
236236
};
237237
```
238238

239-
## Macrotasks and Microtasks
239+
## Macrotasks și Microtasks
240240

241-
Along with *macrotasks*, described in this chapter, there are *microtasks*, mentioned in the chapter <info:microtask-queue>.
241+
Alături de *macrotasks*, descrise în acest capitol, mai sunt și *microtasks*, menționate în capitolul <info:microtask-queue>.
242242

243-
Microtasks come solely from our code. They are usually created by promises: an execution of `.then/catch/finally` handler becomes a microtask. Microtasks are used "under the cover" of `await` as well, as it's another form of promise handling.
243+
Microtask-urile provin exclusiv din codul nostru. Ele sunt de obicei create prin promisiuni: o execuție a gestionarului `.then/catch/finally` devine un microtask. Microtask-urile sunt folosite "sub capacul" lui `await` de asemenea, deoarece este o altă formă de gestionare a promisiunilor.
244244

245-
There's also a special function `queueMicrotask(func)` that queues `func` for execution in the microtask queue.
245+
Mai este de asemenea o funcție specială `queueMicrotask(func)` care pune la coadă `func` pentru execuție în microtask queue.
246246

247-
**Immediately after every *macrotask*, the engine executes all tasks from *microtask* queue, prior to running any other macrotasks or rendering or anything else.**
247+
**Imediat după fiecare *macrotask*, motorul execută toate sarcinile din *microtask* queue, înainte de a rula alte macrotasks sau a randa sau orice altceva.**
248248

249-
For instance, take a look:
249+
De exemplu, aruncați o privire:
250250

251251
```js run
252252
setTimeout(() => alert("timeout"));
@@ -257,23 +257,23 @@ Promise.resolve()
257257
alert("code");
258258
```
259259

260-
What's going to be the order here?
260+
Care va fi ordinea aici?
261261

262-
1. `code` shows first, because it's a regular synchronous call.
263-
2. `promise` shows second, because `.then` passes through the microtask queue, and runs after the current code.
264-
3. `timeout` shows last, because it's a macrotask.
262+
1. `code` apare primul, pentru că este un apel sincron obișnuit.
263+
2. `promise` apare al doilea, deoarece `.then` trece prin microtask queue, și se execută după codul curent.
264+
3. `timeout` apare ultimul, deoarece este un macrotask.
265265

266-
The richer event loop picture looks like this (order is from top to bottom, that is: the script first, then microtasks, rendering and so on):
266+
Imaginea mai bogată a event loop arată astfel (ordinea este de sus în jos, adică: mai întâi scriptul, apoi microtaskul, randarea și așa mai departe):
267267

268268
![](eventLoop-full.svg)
269269

270-
All microtasks are completed before any other event handling or rendering or any other macrotask takes place.
270+
Toate microtask-urile sunt finalizate înainte de orice altă gestionare a evenimentelor sau randare sau orice alt macrotask.
271271

272-
That's important, as it guarantees that the application environment is basically the same (no mouse coordinate changes, no new network data, etc) between microtasks.
272+
Asta este important, deoarece garantează că mediul aplicației este practic același (fără modificări ale coordonatelor mouse-ului, fără date de rețea noi etc.) între microtaskuri.
273273

274-
If we'd like to execute a function asynchronously (after the current code), but before changes are rendered or new events handled, we can schedule it with `queueMicrotask`.
274+
Dacă dorim să executăm o funcție în mod asincron (după codul curent), dar înainte ca modificările să fie randate sau noi evenimente gestionate, o putem programa cu `queueMicrotask`.
275275

276-
Here's an example with "counting progress bar", similar to the one shown previously, but `queueMicrotask` is used instead of `setTimeout`. You can see that it renders at the very end. Just like the synchronous code:
276+
Iată un exemplu cu "contorizarea barei de progres", similar cu cel prezentat anterior, dar `queueMicrotask` este folosit în loc de `setTimeout`. Puteți vedea că se randează chiar la sfârșit. La fel ca în cazul codului sincron:
277277

278278
```html run
279279
<div id="progress"></div>
@@ -283,7 +283,7 @@ Here's an example with "counting progress bar", similar to the one shown previou
283283
284284
function count() {
285285
286-
// do a piece of the heavy job (*)
286+
// face o parte din munca grea (*)
287287
do {
288288
i++;
289289
progress.innerHTML = i;
@@ -301,39 +301,39 @@ Here's an example with "counting progress bar", similar to the one shown previou
301301
</script>
302302
```
303303

304-
## Summary
304+
## Sumar
305305

306-
A more detailed event loop algorithm (though still simplified compared to the [specification](https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model)):
306+
Un algoritm mai detaliat al event loop (deși este încă simplificat în comparație cu [specificația](https://html.spec.whatwg.org/multipage/webappapis.html#event-loop-processing-model)):
307307

308-
1. Dequeue and run the oldest task from the *macrotask* queue (e.g. "script").
309-
2. Execute all *microtasks*:
310-
- While the microtask queue is not empty:
311-
- Dequeue and run the oldest microtask.
312-
3. Render changes if any.
313-
4. If the macrotask queue is empty, wait till a macrotask appears.
314-
5. Go to step 1.
308+
1. Retrage din coadă și rulează cea mai veche sarcină din *macrotask* queue (e.g. "script").
309+
2. Execută toate *microtasks*:
310+
- Cât timp microtask queue nu este goală:
311+
- Retrage din coadă și rulează cel mai vechi microtask.
312+
3. Randează modificări dacă există.
313+
4. Dacă macrotask queue este goală, așteptă până când apare un macrotask.
314+
5. Merge la pasul 1.
315315

316-
To schedule a new *macrotask*:
317-
- Use zero delayed `setTimeout(f)`.
316+
Pentru a programa un nou *macrotask*:
317+
- Utilizați `setTimeout(f)` cu întârziere zero.
318318

319-
That may be used to split a big calculation-heavy task into pieces, for the browser to be able to react to user events and show progress between them.
319+
Acest lucru poate fi folosit pentru a împărți o sarcină mare cu calcule grele în bucăți, pentru ca browserul să poată reacționa la evenimentele utilizatorului și să afișeze progresul între ele.
320320

321-
Also, used in event handlers to schedule an action after the event is fully handled (bubbling done).
321+
De asemenea, utilizat în gestionarii de evenimente pentru a programa o acțiune după ce evenimentul este complet gestionat (bubbling done).
322322

323-
To schedule a new *microtask*
324-
- Use `queueMicrotask(f)`.
325-
- Also promise handlers go through the microtask queue.
323+
Pentru a programa un nou *microtask*
324+
- utilizați `queueMicrotask(f)`.
325+
- De asemenea gestionarii de promisiuni trec prin coada de microtask-uri.
326326

327-
There's no UI or network event handling between microtasks: they run immediately one after another.
327+
Între microtask-uri nu există gestionare de evenimente de interfață sau de rețea: acestea se execută imediat una după alta.
328328

329-
So one may want to `queueMicrotask` to execute a function asynchronously, but within the environment state.
329+
Astfel se poate dori să folosiți `queueMicrotask` pentru a executa o funcție în mod asincron, dar în cadrul stării mediului.
330330

331331
```smart header="Web Workers"
332-
For long heavy calculations that shouldn't block the event loop, we can use [Web Workers](https://html.spec.whatwg.org/multipage/workers.html).
332+
Pentru calcule lungi și grele care nu ar trebui să blocheze event loop, putem folosi [Web Workers](https://html.spec.whatwg.org/multipage/workers.html).
333333
334-
That's a way to run code in another, parallel thread.
334+
Aceasta este o modalitate de a rula codul într-un alt thread, în paralel.
335335
336-
Web Workers can exchange messages with the main process, but they have their own variables, and their own event loop.
336+
Web Workers pot face schimb de mesaje cu procesul principal, dar au propriile variabile, și propriul lor event loop.
337337
338-
Web Workers do not have access to DOM, so they are useful, mainly, for calculations, to use multiple CPU cores simultaneously.
338+
Web Workers nu au acces la DOM, așa că sunt utili, în principal, pentru calcule, pentru a utiliza mai multe nuclee CPU simultan.
339339
```

0 commit comments

Comments
 (0)