大佬教程收集整理的这篇文章主要介绍了是node.js’console.log异步?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧,让我们看看console.log实际上是什么。
首先它是console module的一部分:
exports.log = function() { process.stdout.write(format.apply(this,arguments) + '\n'); };
所以它只是做一些格式化和写入process.stdout,没有异步到目前为止。
process.stdout是一个getter defined on startup,它被延迟初始化,我添加了一些注释来解释一些事情:
.... code here... process.__defineGetter__('stdout',function() { if (stdout) return stdout; // only initialize it once /// many requires here ... if (binding.isatty(fd)) { // a terminal? great! stdout = new tty.WriteStream(fd); } else if (binding.isStdoutBlocking()) { // a file? stdout = new fs.WriteStream(null,{fd: fD}); } else { stdout = new net.Stream(fd); // a stream? // For example: node foo.js > out.txt stdout.readable = false; } return stdout; });
在TTY和UNIX的情况下,我们结束了here,这个东西继承了套接字。因此,所有的节点基本上是将数据推送到套接字,然后终端照顾其余的。
让我们测试一下吧!
var data = '111111111111111111111111111111111111111111111111111'; for(var i = 0,l = 12; i < l; i++) { data += data; // warning! gets very large,very quick } var start = Date.Now(); console.log(data); console.log('wrote %d bytes in %dms',data.length,Date.Now() - start);
结果
....a lot of ones....1111111111111111 wrote 208896 bytes in 17ms real 0m0.969s user 0m0.068s sys 0m0.012s
终端需要大约1秒来打印出套接字内容,但是节点只需要17毫秒来将数据推送到终端。
流情况也是如此,并且文件大小也得到句柄asynchronous。
所以是的Node.js适用于其非阻塞promise。
以上是大佬教程为你收集整理的是node.js’console.log异步?全部内容,希望文章能够帮你解决是node.js’console.log异步?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。