, , , , . , FIFO , . ( ), , ..
, - , . , setImmediate()
readFile()
, , while
.
, (), - ( fs.readFile), idle/prepare (none), poll (none), check (setImmediate callback) , , ( none) , , setImmediate() .
, - -, , , . I/O poll
(. ). , -, -, readfile
, , .
setImmediate()
, readFile()
.
-, , , , readFile()
, setImmediate()
.
, while
:
- while , , , .
- -, , . -
readFile()
. . - I/O.
readFile()
- ( ). - checkHandlers,
setImmediate()
. - . , - , ,
readFile()
.
, , , , . ( ):
const fs = require('fs')
let begin = 0;
function log(msg) {
if (!begin) {
begin = Date.now();
}
let t = ((Date.now() - begin) / 1000).toFixed(3);
console.log("" + t + ": " + msg);
}
log('start program');
setTimeout(() => log('timer'), 10);
setImmediate(() => log('immediate'));
fs.readFile(__filename, () => log('readfile'));
const now = Date.now();
log('start loop');
while(Date.now() - now < 1000) {}
log('done loop');
:
0.000: start program
0.004: start loop
1.004: done loop
1.005: timer
1.006: immediate
1.008: readfile
, , .
:
- 10 ,
fs.readFile()
,setImmediate()
, ,while
while
fs.readFile()
( ). , ( )while
1 , Javascript- "" . . . ( ). , - "" . , "" .
- ,
timer
. - , . - -. -. ,
readFile()
, ( ). - - - .
readFile()
( ) /. setImmediate()
, . , immediate
.- ( ).
- , . .
- -.
readFile()
, readfile
. - , , .
( ), . ( , - , setImmediate()
..). FIFO . - FIFO . ( , ) .
:

. , .
, readfile
. , , readFile()
, . , - ( ), setImmediate()
- . readFile()
setImmediate()
, while.
, , , readFile()
setImmediate()
. , while
, , , , , .
readFile()
setImmediate()
setTimeout()
. , :
const fs = require('fs')
let begin = 0;
function log(msg) {
if (!begin) {
begin = Date.now();
}
let t = ((Date.now() - begin) / 1000).toFixed(3);
console.log("" + t + ": " + msg);
}
log('start program');
setImmediate(() => log('immediate'));
setTimeout(() => log('timer'), 10);
const now = Date.now();
log('start loop');
while(Date.now() - now < 1000) {}
log('done loop');
:
0.000: start program
0.003: start loop
1.003: done loop
1.005: timer
1.008: immediate
( , ).
setImmediate()
.setTimeout()
.- while 1000
- , . , , ,
timer
. - , ,
setImmediate()
, immediate
.
-, :
// timeout_vs_immediate.js
const fs = require('fs');
fs.readFile(__filename, () => {
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
});
, setTimeout()
setImmediate()
, . setImmediate()
, :
immediate
timeout
- , " -". setTimeout()
setImmediate()
-, " -" . , setImmediate()
, .
setImmediate()
setTimeout()
, setImmediate()
, . , , , .