Node.js 更新不只是输出的最后一行

Node.js 更新不只是输出的最后一行,node.js,stdout,Node.js,Stdout,我知道如何更新输出()的最后一行 不过我注意到有些程序的更新不仅仅是最后一行 以下是纱线产量的示例: 所有的等待…行的开头都有一个“旋转点”,没有一个在最后一行 如何实现这一点?您可以使用移动光标 示例:打印“\033[3A”将使光标向上移动三行 如果我已经了解你想要什么…这应该会有帮助: var writeEscape = a => process.stdout.write("\033[" + a); var moveUp = n => writeEscape(n +"A") v

我知道如何更新输出()的最后一行

不过我注意到有些程序的更新不仅仅是最后一行

以下是纱线产量的示例:

所有的
等待…
行的开头都有一个“旋转点”,没有一个在最后一行

如何实现这一点?

您可以使用移动光标

示例:打印
“\033[3A”
将使光标向上移动三行

如果我已经了解你想要什么…这应该会有帮助:

var writeEscape = a => process.stdout.write("\033[" + a);
var moveUp = n => writeEscape(n +"A")
var moveDown = n => writeEscape(n + "B")
var moveRight = n => writeEscape(n +"C")
var moveLeft = n => writeEscape(n + "D")
var waitFor = n => new Promise(r => setTimeout(r,n))

writeEscape("25l"); // hide cursor use writeEscape("","25h") to show it again
process.stdout.write("waiting\n")
process.stdout.write("some other text");
moveUp(1)
moveLeft(15) // "some other text".length = 15

var printWaiting = async() => {
    writeEscape("K"); // erase the whole line

    process.stdout.write("waiting")

    await waitFor(1000)
    process.stdout.write(".")

    await waitFor(1000)
    process.stdout.write(".")

    await waitFor(1000)
    process.stdout.write(".")

    moveLeft(10) // "waiting".length = 7, "...".length = 3

    await waitFor(1000)
    printWaiting()
}
printWaiting();
我已经使用了async/await函数…但是setTimeout only也可以工作