gpt4 book ai didi

node.js - Console.log() 和 process.stdout.write 不同吗?

转载 作者:行者123 更新时间:2023-12-05 03:06:32 27 4
gpt4 key购买 nike

如果 console.log 只是 process.stdout.write 最后有一个换行符,那么为什么我在使用 process.stdout.write 时没有打印任何内容,但我在 console.log() 中得到了答案以下代码。

var waittime = 3000;
var currenttime = 0;
var waitint = 10;

function percentage(p) {
process.stdout.clearLine();
process.stdout.cursorTo(0);
process.stdout.write(`waiting ... ${p}%`);
}

var interval = setInterval(function() {
currenttime += waitint;
percent = Math.floor((currenttime / waittime) * 100);
percentage(percent);
}, waitint);

setTimeout(function() {
clearInterval(interval);
percentage(100);
process.stdout.write("\nGowtham");
}, waittime);

process.stdout.write("\nIt's not getting displayed");
//console.log("It's getting displayed here!");

怎么了?我猜是有区别的。如果我错了,请纠正我。

最佳答案

请花一些时间逐步分析您的代码中调用了哪些process.stdout.*方法。

首先调用的是最后一行:

process.stdout.write("\nIt's not getting displayed");

这将打印出您的消息。

紧接着,Node 执行 setInterval 回调,其中包含 percentage() 调用。在那里,第一个电话是:

process.stdout.clearLine();

因此您的输出被打印并立即被删除。 console.log() 将换行符附加到输出,因此 process.stdout.clearLine(); 会影响消息后的空行。

如果您想让您的代码正常工作,请在您的输出字符串中添加一个换行符:

process.stdout.write("\nNow it's getting displayed, duh!\n");

关于node.js - Console.log() 和 process.stdout.write 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49175562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com