猿问

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

我使用 AWS,我想将所有错误写入stderr使用console.err()stderrAWS Cloud Watch捕获并记录。我不想阻塞事件循环。

console.err()在 Node.js 实现中是异步的吗?


慕妹3242003
浏览 166回答 2
2回答

元芳怎么了

这取决于操作系统以及stderr“去向”的位置。从Node.js 文档:process.stdout并且process.stderr在重要方面与其他 Node.js 流不同:它们分别由console.log()和内部使用console.error()。写入可能是同步的,具体取决于流连接到什么以及系统是 Windows 还是 POSIX:文件:在 Windows 和 POSIX 上同步TTY(终端):在 Windows 上异步,在 POSIX 上同步管道(和套接字):在 Windows 上是同步的,在 POSIX 上是异步的

临摹微笑

出于教育目的,我将演示如何检查它,这样你下次就不需要问了。这是在最基本的情况下测试代码是否异步的方式: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 他是对的,记录速度非常快
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答