【问题标题】:Is Console.log() and process.stdout.write different?Console.log() 和 process.stdout.write 不同吗?
【发布时间】:2018-03-08 14:30:12
【问题描述】:

如果 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!"); 

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

【问题讨论】:

标签: node.js


【解决方案1】:

请花点时间逐步分析您的代码中调用了哪些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");

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2014-12-11
    • 1970-01-01
    相关资源
    最近更新 更多