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



如果控制台.log只是过程.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 执行包含percentage()调用的setInterval回调。在那里,第一个电话是:

process.stdout.clearLine();

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

如果希望代码正常工作,请在输出字符串中添加换行符:

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

最新更新