簡體   English   中英

Node.js:console.err() 是同步還是異步?

[英]Node.js: console.err() is syncronous or asyncronous?

我使用 AWS,我想使用console.err()將所有錯誤寫入stderr stderrAWS 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的“去向”。

Node.js 文檔

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

  1. 它們分別由console.log()console.error()內部使用。

  2. 寫入可能是同步的,具體取決於流所連接的內容以及系統是 Windows 還是 POSIX:

    • 文件:在 Windows 和 POSIX 上同步
    • TTY(終端):在 Windows 上異步,在 POSIX 上同步
    • 管道(和套接字):在 Windows 上同步,在 POSIX 上異步

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM