Go 在cli中使用进度条
我有执行npm安装的代码,如下所示:Go 在cli中使用进度条,go,command-line,progress-bar,Go,Command Line,Progress Bar,我有执行npm安装的代码,如下所示: cmd := exec.Command("npm", "install") 最后是 if err = cmd.Wait(); err != nil { logs.("Error running %s: %v\n", cp[1:], err) return err } 我想使用进度条,我发现了以下内容 但是既然我不能控制执行的时间(我不知道它什么时候结束),我怎么能使用它呢 更新 因为我们无法计算所需的时间(取决于网络等),所以我只想证明一
cmd := exec.Command("npm", "install")
最后是
if err = cmd.Wait(); err != nil {
logs.("Error running %s: %v\n", cp[1:], err)
return err
}
我想使用进度条,我发现了以下内容
但是既然我不能控制执行的时间(我不知道它什么时候结束),我怎么能使用它呢
更新
因为我们无法计算所需的时间(取决于网络等),所以我只想证明一些东西正在工作,
显示进程正在运行,因为用户等待了20秒,他认为什么都不起作用,怎么做?非常简短的回答是:如果没有任何指示单位,就不能 稍微长一点的回答是:向用户提供反馈可以通过几种方式完成。如果您没有详细的进度信息(例如:10个步骤中有n个已经完成,或者10秒中有n个已经过去),则无法真正显示有意义的进度条 您可以向用户提供有关正在发生的事情的反馈。然而,npm已经做到了这一点,为什么不直接显示输出呢
如果您只关心显示进度条,而不管它的意义有多大,那么您可以做的就是猜测该过程将花费多少时间。只需计时一次,并以此作为参考。你说的“我不知道什么时候结束”是什么意思?你显示的代码是this@old_mountain-我希望同时进度条会工作,等待之后它会完成…@old_mountain-同时(在npm安装过程中,这需要一些时间,用户在cli上打印一些内容之前不会看到任何内容…)你将如何向用户显示你没有的进度信息?@Adrian-我想向用户显示一些东西,因为他要花20秒才能看到一些东西,所以这不是经典的进度条,但它显示了一些正在运行的过程。猜测的缺点是:你最终会看到Windows质量的进度条,除了作为安慰剂,它们基本上是完全无用的。有没有一种方法可以仅仅显示一个进展,而不是像完成一样的真正步骤。只是为了展示一些东西(我们正在工作)@shopiaT当然可以,但这通常被称为“旋转器”或臭名昭著的“钟形玻璃”,你可能会从窗口知道。在终端上,有时会有一个旋转的破折号。也许你可以在这里找到一些灵感: