如果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!");
怎么了? 我猜是有区别的。如果我错了,请纠正我。
答案 0 :(得分:2)
请花一些时间逐步分析代码中调用的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");