0

10 秒短视频:https ://drive.google.com/file/d/1YZccegry36sZIPxTawGjaQ4Sexw5zGpZ/view

我有一个 CLI 应用程序,它要求用户进行选择,然后从 mysql 数据库返回响应。CLI 应用程序在 node.js 中运行,并使用 Inquirer 提示问题。

但是,在返回信息表后,下一个提示会覆盖表数据,使其几乎无法读取。它应该出现在其余数据下方的单独行中,而不是重叠。收集和返回数据的函数是异步的(它们必须是为了循环),但为了测试目的,我只使用了一小部分标准同步函数进行了尝试,并且存在同样的问题。我已经尝试过使用和不使用console.table,提示仍然会覆盖响应,作为控制台表或对象列表。

我在 Bash 中启用了 checkwinsize

shopt -s checkwinsize

它仍然存在。

是巴什吗?询问者有问题吗?

4

1 回答 1

0

我也有这个问题。在提示符的 .then 方法中,我使用 switch 和 case 来根据用户选择来确定控制台日志的内容。然后在底部我有一个 if 语句检查他们是否选择了“完成”,如果他们没有再次调用提示函数,我将其命名为“questionUser”。

这就是我遇到问题的地方,再次调用 questionUser 会覆盖我的控制台日志。

我所做的是将 questionUser 调用包装在 setTimeout 中,如下所示:

if(data.option !== 'Finish'){
        setTimeout(() => {
            questionUser();
        }, 1000);
    }

这对我有用,并且允许我的控制台日志数据不会被删除。希望如果其他人遇到这个问题,这有帮助,我在任何地方都找不到这个特定问题的答案。

于 2021-10-10T14:21:00.150 回答