@komigor

Почему Event Loop пропускает очередь poll и сразу выполняет check?

Почему Event Loop пропускает очередь poll и сразу выполняет check? Это же не логично все очереди он выполняеет по порядку, а птотом бац и перескакивает. Вот зачем и для чего не понятно.

Например вот в таком коде он сначала пойдет и выполнит setImmidiate вместо readFile

const fs = require('fs');

console.log('START');
 
setTimeout(() => console.log('setTimeout'), 0); //Попал в очередь timers 1)timers  set intervals  
setImmediate(() => console.log('setImmediate')); //Попал в очередь check 7


fs.readFile( 'eventloop.txt', () => { //попл в очередь poll
    setTimeout(() => console.log('readfile setTimeout'), 0);
    setImmediate(() => console.log('readFile setImmidiate'));
    process.nextTick(() => console.log('read file Next Tick'));
    }
)

Promise.resolve() // Попал в очередь other microtask que
            .then(() => {
                console.log('Promise')
                process.nextTick(() => console.log('Promise Next Tick'));
            })
            
            process.nextTick(() => console.log('nextTick'));
     
         setTimeout(() => console.log('setTimeout 2'), 0); //Попал в очередь timers 1)timers  set intervals  все node.js пропарсилась;
console.log('end')


Вот лог

START
end
nextTick
Promise
Promise Next Tick
setTimeout
setTimeout 2
setImmediate
read file Next Tick
readFile setImmidiate
readfile setTimeout

и почму он такой, а не такой

START
end
nextTick
Promise
Promise Next Tick
setTimeout
setTimeout 2
read file Next Tick
readFile setImmidiate
readfile setTimeout
setImmediate
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@komigor Автор вопроса
Оказалось бращение к файловой системе Node.js делегирует системным вызовам, то есть эта фаза не полностью под контролем Node.js, в отличие от всех остальных в моем скрипте. Поэтому, до тех пор, пока придёт ответ от файловой системы, event loop может пройти виток или больше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы