Есть ли способ полностью отменить асинхронное «приглашение», пока оно ожидает ввода? - PullRequest
0 голосов
/ 09 июня 2018

Я работаю - как упражнение - над игрой на 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));

когда таймер истекает, я просто перехожу к другому коду, ничего не делая с приглашением (которое все еще ждет), так как я не знаю, как «отменить»это ...

1 Ответ

0 голосов
/ 09 июня 2018

Я не смог найти способ заставить его работать с пакетом NPM prompt, но пакет prompt-improved, похоже, имеет возможность тайм-аута, хотя он недостаточно документирован.

...