Node.js
Node.jsPętla zdarzeń
- Przykład operacji blokowania:
let loop = (i, max) => {
while (i < max) i++;
return i;
};
// This operation will block Node.js
// Because, it's CPU-bound
// You should be careful about this kind of code
loop(0, 1e+12);
- Nieblokujący przykład operacji we / wy:
let i = 0;
const step = (max) => {
while (i < max) i++;
console.log("i = %d", i);
};
const tick = (max) => process.nextTick(step, max);
// this will postpone tick run step's while-loop to event loop cycles
// any other IO-bound operation (like filesystem reading) can take place
// in parallel
tick(1e+6);
tick(1e+7);
console.log("this will output before all of tick operations. i = %d", i);
console.log("because tick operations will be postponed");
tick(1e+8);
Mówiąc prościej, Pętla zdarzeń jest jednowątkowym mechanizmem kolejki, który wykonuje kod związany z procesorem do końca jego wykonania oraz kod związany z operacjami we / wy w sposób nieblokujący.

Uwagi dotyczące wydajności
Operacje nieblokujące nie blokują kolejki i nie wpływają na wydajność pętli. Jednak operacje związane z procesorem zablokują kolejkę, dlatego należy zachować ostrożność, aby nie wykonywać operacji związanych z procesorem w kodzie Node.js. Node.js nie blokuje We / Wy, ponieważ odciąża pracę do jądra systemu operacyjnego, a gdy operacja we / wy dostarcza dane (jako zdarzenie), powiadomi Twój kod o dostarczonych wywołaniach zwrotnych.
Pętla zdarzeń w JS
