用节点重复询问用户输入?

时间:2015-09-02 23:06:52

标签: node.js

这里是JS / Node的新手。我试着编写一个非常简单的Node程序来反复要求用户键入用户名,直到他/她键入关键字done。我正在使用提示npm包(https://www.npmjs.com/package/prompt)。

var prompt = require('prompt');

// Start the prompt
prompt.start();

var currentDinerName = "";
var done = false;

while (done !== true) {
    // Ask for name until user inputs "done"
    prompt.get(['name'], function(err, result) {
        console.log('Diner name: ' + result.name);
        currentDinerName = result.name;
        if (currentDinerName === 'done') {
            console.log('We are done.');
            done = true;
        }
    });
}

然而,我收到内存泄漏 - 它不喜欢这个while循环。在Node / JS中执行此操作的正确方法是什么?

感谢。

1 个答案:

答案 0 :(得分:5)

将提示代码放入函数中,并在用户未完成时调用它:

function ask() {
    // Ask for name until user inputs "done"
    prompt.get(['name'], function(err, result) {
        console.log('Diner name: ' + result.name);
        currentDinerName = result.name;
        if (currentDinerName === 'done') {
            console.log('We are done.');
        } else {
            ask();
        }
    });
}

ask();