我正在使用inquirer.js编写Node CLI命令,这可能需要花费相当长的时间才能完成,因此我正在尝试更新UI,如下所示:

✓ Thing A complete
✓ Thing B complete
✓ Thing C complete
⠹ Loading...

{display json result}


(“加载中...”位于底部,完成后显示日志)。

简化后,该命令具有以下结构:

ui.startLoader()
thingA()
  .then((res) => {
    ui.log('✓ Thing A complete')
    return res
  })
  .then((res) => {
    return res.reduce(thingB, Promise.resolve())
  })
  .then((res) => {
    ui.log('✓ Thing B complete')
    return res
  })
  .then((res) => {
    return res.reduce(thingC, Promise.resolve())
  })
  .then((res) => {
    ui.log('✓ Thing C complete')
    return res
  })
  .then(ui.json)
  .catch(console.log)
  .then(ui.exit)


ui.startloader只需按照官方example中所述设置BottomBar,并且看起来工作正常。

ui.logconsole.log('\n' . text)时,我的输出是:

⠋ Loading...
✓ Thing A complete
⠹ Loading...
✓ Thing B complete
⠴ Loading...
✓ Thing C complete

{display json result}


ui.log是inquirer.js'BottomBar.log.write(text)时,我的输出是:

✓ Thing A complete
⠹ Loading...

{display json result}


“正在加载...”行保留在底部,但仅显示第一个日志。

最佳答案

在Inquirer.js中,这似乎是一个问题。从0.12.0升级到更新的基于ES6 Promise的界面时,我遇到了它。

我已经打开一个问题:
https://github.com/SBoudrias/Inquirer.js/issues/485

并提出请求修复的请求:
https://github.com/SBoudrias/Inquirer.js/pull/486

希望它被接受。

关于javascript - Inquirer.js-将BottomBar与顺序日志结合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41791589/

10-10 05:15