Sobes.tech
Middle

Чӣ гуна дар Node.js як сӯроғӣ иҷро мешавад?

sobes.tech AI

Ҷавоб аз AI

Node.js — муҳити иҷрои бо як ядро барои _ иҷрои коди JavaScript_ бо шарофати механизми Event Loop. Он пайваста навбатро бо рӯйдодҳо санҷида, callback-ҳои дахлдорро иҷро мекунад.

Барои иҷрои амалҳои блоккунанда (воридот/баромад, кор бо файлҳо, шабака), Node.js аз пули сӯрохҳо (Thread Pool) аз китобхонаи libuv истифода мебарад. Ин амалҳо ба таври асинхрон дар сӯрохҳои алоҳида иҷро мешаванд, ки сӯрохии асосии Event Loop-ро монеъ намекунанд. Натиҷаҳо ё хатоҳо тавассути callback ба Event Loop баргардонида мешаванд.

Компонентҳои калидӣ:

  • Event Loop: Давраи асосии иҷро, ки рӯйдодҳо ва даъватҳои функсияҳоро коркард мекунад.
  • Рӯйхати callback: Рӯйхат барои callback-ҳои амалҳои асинхронӣ, ки анҷом ёфтаанд.
  • Пул сӯрохҳо: Сӯрохҳои алоҳида барои иҷрои вазифаҳои блоккунанда.
  • libuv: Китобхонаи сатҳи поён, ки Event Loop ва пул сӯрохҳоро таъмин мекунад.
// Намунаи амали асинхрон бо файл
const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  // Ин callback пас аз анҷоми хондани файл иҷро мешавад
  // дар сӯрохи алоҳида аз пул сӯрохҳо
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

console.log('Ин паём аввал пайдо мешавад, зеро хондани файл асинхрон аст');

Тавре ки мебинем, Node.js иҷрои баландсифатро барои вазифаҳои ҳамзамон бо истифода аз воридот/баромади беасос таъмин мекунад, гарчанде ки JavaScript дар як сӯрох иҷро мешавад.