Node.js Event Loop ને સમજવું

Event Loop એ કોઈ વર્કર નથી. તે એક કોઓર્ડિનેટર છે.

ઘણા ડેવલપર્સને Event Loop જટિલ લાગે છે. મુશ્કેલી ઘણીવાર એકસાથે ઘણા બધા ખ્યાલોને મિક્સ કરવાને કારણે આવે છે. તમારે libuv, Call Stack, Promises અને I/O બધું એકસાથે ટ્રેક કરવું પડે છે.

અહીં સાચી વાત છે. Event Loop કામનું શેડ્યૂલ બનાવે છે. તે કામ કરતું નથી.

JavaScript એક સિંગલ થ્રેડ પર ચાલે છે. આનો અર્થ એ છે કે કોડ એક સીધી રેખામાં ચાલે છે. એક કાર્ય પૂરું થયા પછી જ બીજું કાર્ય શરૂ થઈ શકે છે. આખા પ્રોગ્રામને અટકાવ્યા વિના ફાઇલો વાંચવા અથવા નેટવર્ક રિક્વેસ્ટ જેવી asynchronous ટાસ્કનું સંચાલન કરવા માટે આપણને એક સિસ્ટમની જરૂર છે.

તે કેવી રીતે કામ કરે છે:

Event Loop વિવિધ ક્યુ (queues) માંથી callbacks ને Call Stack માં લાવે છે. દરેક ફેઝ (phase) ને એક લાઇન તરીકે વિચારો. Event Loop એ વ્યક્તિ છે જે લોકોને લાઇનમાંથી રૂમમાં લઈ જાય છે.

મુખ્ય ફેઝ આ મુજબ છે:

એક સામાન્ય ભૂલ એ છે કે એવું વિચારવું કે Event Loop પાસે પોતાનું Call Stack છે. તે નથી. રનટાઇમ પાસે એક જ Call Stack અને એક microtask queue હોય છે.

પ્રક્રિયા આ રીતે ચાલે છે:

  1. Event Loop વર્તમાન ફેઝમાંથી એક callback પસંદ કરે છે.
  2. તે તે callback ને Call Stack માં પુશ કરે છે.
  3. Call Stack કોડ રન કરે છે.
  4. એકવાર callback પૂરું થાય પછી, એન્જિન microtask queue ને ખાલી કરે છે. અહીં Promises અને async/await કામ કરે છે.
  5. Event Loop પછીના ફેઝ પર જાય છે.

જો તમે setTimeout(..., 0) નો ઉપયોગ કરો છો, તો તે Timers ફેઝમાં જાય છે. જો તમે setImmediate(...) નો ઉપયોગ કરો છો, તો તે Check ફેઝમાં જાય છે.

મુખ્ય કામ OS kernel અને libuv માં થાય છે. Event Loop ફક્ત JavaScript ને જણાવે છે કે ક્યારે પ્રતિક્રિયા આપવાનો સમય છે.

સ્ત્રોત: https://dev.to/joaovictor6/event-loop-entendendo-uma-das-bases-do-node-41a