首页   注册   登录
 dcatfly 最近的时间轴更新

dcatfly

V2EX 第 215669 号会员,加入于 2017-02-17 13:06:09 +08:00
今日活跃度排名 3442
dcatfly 最近回复了
@shawncheung 好的 感谢回复。
17 小时 2 分钟前
回复了 nikolausliu 创建的主题 Node.js 关于 event loop,我有点懵。
@nikolausliu ok thx.
@shawncheung 理论上来说相同版本的源码,自己编译的结果跟官方编译的结果应该是相同的呀。
20 小时 16 分钟前
回复了 zjgwifi 创建的主题 全球工单系统 1password 问题请教
确实能删,但是你建账号的时候应该会要建立自己的密码库,你的私人密码应该都存在那个里面,删除只是将你的账户从家庭组中删除,应该不会影响已经存储在你账号里的密码库。
1 天前
回复了 nikolausliu 创建的主题 Node.js 关于 event loop,我有点懵。
@mrzjd
我就是 copy 楼主的代码,只把 readFile 改成了 stat,测试多次结果相同。node 版本也改为了跟楼主一样的 8.10.0,电脑环境为 mac,但是这个应该平台无关。
另外如果 readFile 的 path 是错误的,打印的顺序也符合期望,似乎也证实了我的猜测。
你说的如果进入 poll 的时候 timers 还存在的情况文档中确实没说。我也没找到明确的资料。但是我觉得这个 timers 指的是第一个 timers 阶段中的 timers,不包含 immediate。
原文确实有说 immediate 也是一种特殊的 timers,但是原文是说它是一个特殊的 timers 并且在 event loop 中单独的阶段运行。
setImmediate() is actually a special timer that runs in a separate phase of the event loop.
setImmediate 在 check 阶段运行应该是没有疑问的。
2 天前
回复了 nikolausliu 创建的主题 Node.js 关于 event loop,我有点懵。
这个问题有点意思。我觉得楼上 @mrzjd 说的贴边,但还是有些偏差。
首先要明白 node 中 event loop 和浏览器中的 event loop 是不同的。详细说明推荐[官方文档]( https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/)和[这篇文章]( http://lynnelv.github.io/js-event-loop-nodejs).
有了对 node 的 event loop 模型的了解之后,对应到上文的代码中,顺序执行完之后,应该会进入到 timers 阶段。这个时候因为 setTimeout 早就到期了,所以会输出‘ timer ’,然后会走到 poll 阶段,这里按照官方的说法应该是先看有没有 I/O 的回调,如果有回调执行回调队列,执行完毕之后再去看有没有 setImmediate 的回调。所以按照这个流程,加上执行这么久了,I/O 应该走完了,那么应该是先输出‘ io ’,然后输出‘ setImmediate ’。但实际上输出的顺序是相反的。
这里我的猜测是 fs.readFile 不止是一个 I/O 异步回调,它可能包含了多个 I/O 异步。比如说读取之前要先看文件能不能读之类的。所以在 poll 阶段时执行了 fs.readFile 中的第一个异步 I/O,但还没有真正的读取文件,然后又到了 check 阶段执行了 setImmediate, 重新进入了 event loop.
而且当 fs.readFile 换成 fs.stat 时,输出的顺序符合期望。我觉得这也验证了我的猜测。
2 天前
回复了 FaiChou 创建的主题 美酒与美食 常备的好吃泡面有哪些?
辛拉面,出前一丁,合味道
@tufeiyuan 钱不能解决所有问题。父母能接过来,但是他们的朋友,工作,关系都在家乡,这是没法解决的。不过目前最大的问题还是没钱。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   824 人在线   最高记录 4385   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 66ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
♥ Do have faith in what you're doing.
沪ICP备16043287号-1