En attente de l'utilisateur pour entrer l'entrée dans Node.js

Je comprends la raison Node.js pour les événements asynchrones et j'apprends à écrire le code de cette façon. Cependant, je suis coincé avec la situation suivante:

Je veux écrire du code que de temps en temps des pauses pour la saisie de l'utilisateur.

Le programme n'est pas conçu comme un serveur (même si actuellement il est prévu pour la ligne de commande). Je réalise que c'est atypique utilisation de Nœud. Mon objectif est de migrer le programme de retour à côté client Javascript de l'application, mais je trouve que travailler dans Node.js pour être à la fois fascinant et très utile pour le débogage. Cela me ramène à mon exemple qui illustre bien le problème:

Il lit dans un fichier texte et les sorties de chaque ligne, à moins que la ligne se termine par un "?". Dans ce cas, il doit se mettre en pause pour l'utilisateur de préciser ce qu'on entend par cette ligne. Actuellement mon programme de sorties toutes les lignes de la première et attend des précisions à la fin.

Est-il de toute façon à force node.js la pause de ligne de commande d'entrée, précisément pour le cas où la condition des feux (c'est à dire, où la ligne se termine par un "?")?

var fs = require("fs");
var filename = "";
var i = 0;
var lines = [];

//modeled on http://st-on-it.blogspot.com/2011/05/how-to-read-user-input-with-nodejs.html
var query = function(text, callback) {
    process.stdin.resume();
    process.stdout.write("Please clarify what was meant by: " + text);
    process.stdin.once("data", function(data) {
        callback(data.toString().trim());
    });
};

if (process.argv.length > 2) {
    filename = process.argv[2];
    fs.readFile(filename, "ascii", function(err, data) {
        if (err) {
            console.error("" + err);
            process.exit(1);
        }
        lines = data.split("\n");
        for (i = 0; i < lines.length; i++) {
            if (/\?$/.test(lines[i])) { //ask user for clarification
                query(lines[i], function(response) {
                    console.log(response);
                    process.stdin.pause();
                });
            }
            else {
                console.log(lines[i]);
            }
        }
    });
}
else {
    console.error("File name must be supplied on command line.");
    process.exit(1);
}  

source d'informationauteur blandish