使用Node.js,ubuntu,在Promise https.request期间不会出现console.log,直到完成。如何实时冲洗或查看?

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

在服务器端 Node.js 我有一个简单的 http.request ...这是在 shell 上运行的简单 script.js 中。

async function postRequest(_options, data) {
    return new Promise((resolve, reject) => {
        const req = https.request(_options, (res) => {
            let response = '';
            res.on('data', (chunk) => {
                response += chunk
            })

            res.on('end', () => {
                resolve(response);
            })
        })
        req.on('error', (err) => {
            reject(err)
        })
        req.write(data)
        req.end()
    })
}

称为喜欢

const resp = await postRequest(opt, JSON.stringify(req))

我只是添加了这个

            res.on('data', (chunk) => {
                response += chunk
                console.log(">> ", response.length)
            })

下载 100s mb,因此在几分钟内有 100 个控制台日志。

不幸的是它不起作用 - 一百个控制台日志仅在完成承诺后在最后吐出。

如何简单地实时查看这些消息?

我尝试过使用console.error、process.stdout.write等,但可能我在其中犯了一些小错误。

如何在 Promise 进行过程中实时查看日志消息?

问题演示:

node.js shell async-await promise console.log
1个回答
0
投票
我无法重现,你的脚本运行得很好。

当服务器处理请求 2 分钟然后才开始响应时,所描述的行为是预期的。通过在收到

res

ponse(或其状态代码、标头等)后(在开始流式传输之前)立即记录它,您可以验证这一点。

© www.soinside.com 2019 - 2024. All rights reserved.