首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

Node中console.log到底是异步还是同步的

发布网友 发布时间:2022-04-22 08:03

我来回答

1个回答

热心网友 时间:2022-04-22 16:40

那么在Node.js环境中console.log的执行是异步还是同步的呢?
我们首先要知道Node.js中实现console.log的原理

function log() { process.stdout.write( util.format.apply(this, arguments); )}

那么这篇文章就等同于问process.stdout.write是同步还是异步的?
其实官方文档已经给出了答案,A note on process I/O
process.stdout和process.stderr是根据系统环境来判定的同步还是异步的
Files: synchronous on Windows and Linux
TTYs (Terminals): asynchronous on Windows, synchronous on Unix
Pipes (and sockets): synchronous on Windows, asynchronous on Unix
那么console.log也是根据系统环境来判定同步还是异步的。
那么这个同步还是异步对我们程序有影响吗?
我们知道同步写入阻止事件循环,直到写入完成为止。这可以在输出到一个文件的情况下这几乎是瞬间完成的,但系统高负载下,比如管道不是在接收末端读取,或缓慢的终端或文件系统,其可能的事件循环受阻的次数足够多,足够长的时间,有严重的负面影响。在向交互式终端会话写入时,这可能不是问题,但在对流程输出流进行生产日志记录时,考虑这一点尤为重要。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com