【发布时间】:2021-10-22 11:39:12
【问题描述】:
我编写了一个非常基本的 nodejs 应用程序,如下所示:
#!/usr/bin/env node
const inquirer = require("inquirer");
const chalk = require("chalk");
const figlet = require("figlet");
const shell = require("shelljs");
const fs = require('fs');
//Defining some functions
//~~
//The main part of the code
const run = async function() {
const answers = await form();
//other codes
//~~
}
run();
代码的主要目的是使用inquirer模块在控制台中提出一些问题,然后在run()部分处理答案。它在这方面做得很好。它成功地提出了问题,并对答案做了它应该做的事情。
但是,处理完答案后,该过程将退出。我想要的是在处理完答案后,我希望它再次回答相同的问题,并不断重复,直到我手动终止该过程。
我试过了:
for( ; ; ) {
run();
}
但是,它会一次又一次地回答问题,而无需等待答案。这是控制台的样子: console output
我希望它这样做:
- 提出问题并等到我输入答案。
- 处理问题(使用
run()中的代码) - 完成后,返回问题 1。
我该怎么做?
【问题讨论】:
-
while (true) { await run(); } -
它会抛出一个错误,等待只在异步函数中有效。
-
@EukkMaru 自从 Node v14.8 以来没有 supports top-level await
-
@JeremyThile 我正在使用节点 v16.11.0,我有点过于简化了错误消息,但该消息类似于它应该在异步函数或模块的顶层主体中。跨度>
-
您可以随时将我的线路放入异步函数并调用它。我的评论主要是为了表明你必须
awaitrun() 调用。
标签: javascript node.js console command-line-interface console-application