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

问题描述 投票:0回答:2

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

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

javascript node.js event-loop
2个回答
0
投票

出于教育目的,我将演示如何检查它,以便您下次无需询问。这是在最基本的情况下测试代码是否异步的方法:

const asyncOperation = async () => {
	await new Promise( (res) => setTimeout(res, 1000))
	console.log("Async finished")
}

console.log("Start")
asyncOperation()
console.log("End")

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

因此,我将为您的案例添加新的摘要,以便您知道。

const asyncOperation = () => {
  console.error("Async Err?")
}

console.log("Start")
asyncOperation()
console.log("End")

运行它,您会看到。您也可以在Node环境中尝试一下,结果将是相同的。

[听@ jonas-wilms他是对的,日志记录非常快


0
投票

取决于操作系统以及stderr的运行位置。

来自the Node.js documentation

[process.stdoutprocess.stderr在重要方面与其他Node.js流不同:

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

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

    • 文件:在Windows和POSIX上同步
    • TTY(终端):在Windows上异步,在POSIX上同步
    • 管道(和套接字):在Windows上同步,在POSIX上异步
© www.soinside.com 2019 - 2024. All rights reserved.