[英]Node.js: console.err() is syncronous or asyncronous?
我使用 AWS,我想使用console.err()
將所有錯誤寫入stderr
。 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 finished”,因為 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 上異步
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.