exec("find /", { timeout: 10000, maxBuffer: 20000*1024 }, function (error, stdout, stderr) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write(stdout); response.end(); });
书上介绍"find /"将花费10s,但是我试验时运行很快,几乎试验不出“非阻塞”这个概念。我在想,是否“find /”的问题,根目录只有4个文件而已。难道仅是文件不够多,使得“find /”无需超时10s吗,只是几毫秒就完成了。如果真的是这种,这本书太不照顾新手了,用别的例子试验非阻塞岂非更好!
我觉得看书不够仔细,虽然node入门我看过之后都过了很久,但是很启蒙的一本书,其中的原话是这样的:
我们这里“ls -lah”的操作其实是非常快的(除非当前目录下有上百万个文件)
...
为了让效果更加明显,我们想象一个更耗时的命令: “find /”,它在我机器上需要执行1分钟左右的时间,然而,尽管在请求处理程序中,我把“ls -lah”换成“find /”,当打开/start URL的时候,依然能够立即获得HTTP响应 —— 很明显,当exec()在后台执行的时候,Node.js自身会继续执行后面的代码。并且我们这里假设传递给exec()的回调函数,只会在“find /”命令执行完成之后才会被调用。
嗯,我也觉得启蒙性很好,按书步骤,我大约知道一点commonJS模块,以后阅读别人的代码也容易些。但是这个例子用于入门阻塞,总感觉不妥,难道我得拷贝一些文件夹在根下,才能验证它?(不知道我这么理解对不对,文中的确没有提到)。别外一些,无关代码的细节问题,又占用不少学习时间。总而言之,不断验证,反复折腾,学习不易呀。@272121742,这个是你的QQ号吗?想向你请教些新手问题。。。