【问题标题】:Is there any way to cleanly cancel asynchronous 'prompt' while it is waiting for input?有没有办法在等待输入时干净地取消异步“提示”?
【发布时间】:2018-06-09 19:42:54
【问题描述】:

作为练习,我正在开发一个涉及一系列问题的 Javascript 游戏。我只是在 Node 中运行它,现在输出到控制台。我使用prompt 包(https://www.npmjs.com/package/prompt)处理用户输入。

一切正常,除了我还需要设置回答问题所需的时间长度,如果用户超过该时间,则继续下一个问题。然而,那时我正处于prompt 等待响应的中间,当我继续前进时,我开始得到奇怪的副作用,比如下一轮输入的输入加倍(然后在下一次超时时加倍) -- 即在控制台上输入s 会产生ss

这个包是否有取消等待输入的提示?我浏览了文档并没有看到方法。如果没有,您是否知道可能提供此功能的软件包 - 我查看了但目前还没有找到。

我不知道代码是否有帮助,因为问题似乎出在包本身,但这是我正在做的:

要求用户输入:

this.getUserName = function (callback) {

        var schema = {
            properties: {
                name: {
                    description: "Tu nombre por favor:",
                    pattern: /^[áÁóÓíÍéÉñÑa-zA-Z\s\-]+$/,
                    message: 'Solo letras, por favor',
                    required: true
                }
            }
        };
        prompt.get(schema, callback);
    };

当我调用它时,我使用 setTimeout 设置了一个计时器

 this.timer = setTimeout(this.timedOut.bind(this), this.ROUND_TIME);
        this.prompter.getUserResponse(this.checkAnswer.bind(this));

当计时器超时时,我只是继续执行另一段代码,对提示(仍在等待)什么都不做,因为我不知道如何“取消”它......

【问题讨论】:

    标签: javascript node.js prompt


    【解决方案1】:

    我找不到使它与 NPM prompt 包一起工作的方法,但包 prompt-improved 似乎具有超时功能,尽管它没有很好的文档记录。

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 2021-02-24
      • 2021-01-25
      • 2020-10-22
      • 1970-01-01
      • 2016-10-04
      • 2016-08-09
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多