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 дар як сӯрох иҷро мешавад.