为了账号安全,请及时绑定邮箱和手机立即绑定

Node.js:console.err() 是同步的还是异步的?

Node.js:console.err() 是同步的还是异步的?

慕妹3242003 2022-06-09 17:09:33
我使用 AWS,我想将所有错误写入stderr使用console.err(). stderr被AWS Cloud Watch捕获并记录。我不想阻塞事件循环。console.err()在 Node.js 实现中是异步的吗?
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

这取决于操作系统以及stderr“去向”的位置。

Node.js 文档

process.stdout并且process.stderr在重要方面与其他 Node.js 流不同:

  1. 它们分别由console.log()和内部使用console.error()

  2. 写入可能是同步的,具体取决于流连接到什么以及系统是 Windows 还是 POSIX:

    • 文件:在 Windows 和 POSIX 上同步

    • TTY(终端):在 Windows 上异步,在 POSIX 上同步

    • 管道(和套接字):在 Windows 上是同步的,在 POSIX 上是异步的


查看完整回答
反对 回复 2022-06-09
?
临摹微笑

TA贡献1982条经验 获得超2个赞

出于教育目的,我将演示如何检查它,这样你下次就不需要问了。这是在最基本的情况下测试代码是否异步的方式:


const asyncOperation = async () => {

  await new Promise( (res) => setTimeout(res, 1000))

  console.log("Async finished")

}


console.log("Start")

asyncOperation()

console.log("End")


因此,如果您运行它,您将看到它首先打印“End”,然后再打印“Async finished”,因为 setTimeout 是异步的。


所以我会为你的情况添加新的剪辑,所以你知道。


const asyncOperation = () => {

  console.error("Async Err?")

}


console.log("Start")

asyncOperation()

console.log("End")


运行它,你会看到。你也可以在Node环境下试试,结果是一样的。


听听@jonas-wilms 他是对的,记录速度非常快


查看完整回答
反对 回复 2022-06-09
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信