如果控制台.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");