我使用AWS,我想使用stderr
将所有错误写入console.err()
。 stderr
被AWS Cloud Watch捕获并记录。我不想阻止事件循环。
Node.js实现中的console.err()
是否异步?
出于教育目的,我将演示如何检查它,以便您下次无需询问。这是在最基本的情况下测试代码是否异步的方法:
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他是对的,日志记录非常快
取决于操作系统以及stderr
的运行位置。
[
process.stdout
和process.stderr
在重要方面与其他Node.js流不同:
它们分别由
console.log()
和console.error()
内部使用。写入可能是同步的,具体取决于流连接到的对象以及系统是Windows还是POSIX:
- 文件:在Windows和POSIX上同步
- TTY(终端):在Windows上异步,在POSIX上同步
- 管道(和套接字):在Windows上同步,在POSIX上异步