CNode

nodejs I/O callback 执行时间点的问题

问答
Qqitang发布于11 年前最后回复11 年前5 回复5076 浏览0 收藏

var fs = require('fs'); fs.writeFile('output.txt','hello world', function(err){ console.log('file saved!'); }) while(true) {}

在上面的例子里,貌似writeFile的 callback 永远不会执行。 我的问题是:nodejs使用的event loop, 当某个I/O操作执行完毕后,他的callback是立刻执行,还是在某个合适的时间点执行?如果是后者情况,那么我想进一步问下,这个具体点插入时间点是如何决定的呢? 谢谢了!

查看回复

回复 (5)

H
haozxuan#1·11 年前

process.nextTick()很好玩的一个函数,如果看懂的话你上面的例子就没有疑问了。

S
struCoder#2·11 年前

同意三楼的,往深处说,这不是node的问题,这牵涉到js的线程阻塞和事件队里, 简单的说就是js事件处理器要等到正在运行的代码都已结束后才会执行。

A
Acceptedlc#3·11 年前

当前的事件阻塞了,所以不执行 自豪地采用 CNodeJS ionic

W
wmzy#4·11 年前

IO完毕后,会将结果放入一个队列,等待主事件循环,具体何时执行,要看这个事件的顺序和优先级了。

D
DavidCai1993#5·11 年前

因为你的while还没执行完...

参与回复
登录后即可参与回复。登录