2016-12-05 18 views
-3

Ich arbeite an einem JS-Projekt, das mit node.js ausgeführt wird, und ich kann nicht herausfinden, wie die Eingabeaufforderung für die Benutzereingabe ordnungsgemäß funktioniert. Ich habe es von Npm installiert, folgte den Schritten und ich kann das Programm dazu bringen, Benutzereingaben anzufordern, aber ich kann das Ergebnis nicht in einer Variablen speichern.Verwenden der Eingabeaufforderung von node.js für Benutzereingaben?

Ich möchte den Benutzer bei jedem Zug auf seinen nächsten Zug (oben, unten, links oder rechts) hinweisen und das Ergebnis verwenden. Ich habe versucht, eine globale Bewegung Variable und beeinflussen es in der Eingabeaufforderung Abschnitt, aber es scheint nicht zu funktionieren.

var Moving = function(maxMoves){ 

    for(var n=maxMoves; n>0;){ 
     var move; 
     var l; 
     //This would prompt for a direction (up,down,left,right) 
     move = prompt(); 
     //And this would prompt for the number of tiles to advance; 
     l = prompt(); 
     Direction(move,l); 
     n-=l; 
    } 
}; 
+3

Wir können Ihnen nicht mit Code helfen, den wir nicht sehen können. Reduziere dein Problem auf [mcve] und lege das in die Frage. –

+0

Grundsätzlich, unabhängig von meinem Code, ist meine Frage einfach: Wie speichert man eine Benutzereingabe in einer Variablen in node.js? – Dat8StringGuy

+1

Duplikat von [* Wie kann ich Konsoleneingaben von einem Benutzer in node.js nehmen? *] (Http://stackoverflow.com/questions/26683734/how-can-i-take-console-input-froma-a- user-in-node-js) Bitte [suche vor dem Posting.] (/ search? q = Wie + + + a + Benutzer + Eingabe + in + a + Variable + in + node.js) Mehr zum Suchen [hier ] (/ Hilfe/Suche). –

Antwort

1

Wenn Sie sagen, „installiert es von NPM“ Ich gehe davon aus Sie beziehen sich auf das prompt Modul von Bügeleisen.

Aus ihrer docs, wie bei den meisten Knoten Dinge, es sieht aus wie es eine asynchrone Funktion freigibt, so dass Sie Eingabe in der Eingabeaufforderung Rückruf behandeln werden:

nicht anders sein würde
var prompt = require('prompt'); 

    // 
    // Start the prompt 
    // 
    prompt.start(); 

    // 
    // Get two properties from the user: username and email 
    // 
    prompt.get(['username', 'email'], function (err, result) { 
    // 
    // Log the results. 
    // 
    console.log('Command-line input received:'); 
    console.log(' username: ' + result.username); 
    console.log(' email: ' + result.email); 
    }); 

es in einer Variablen speichern als den Zugriff auf das Ergebnisobjekt oben, aber erkennen Sie, dass es nur innerhalb dieses Callbacks verfügbar ist, da es asynchron ist.

+0

Ich bin immer noch ein bisschen verwirrt. Wenn man bedenkt, dass es asynchron ist, bin ich nicht sicher, wie ich es in einer Variablen speichern kann, die ich sofort verwenden kann. Ich habe versucht, diese Vorlage zu verwenden und _move = result; _ hinzuzufügen, aber als ich dann versucht habe, _console.log (move) _ zu schreiben, habe ich einen _undefined_ erhalten. – Dat8StringGuy

+0

Wie ich bereits sagte, sind die Variablen nur innerhalb des Rückfrage-Callbacks zuverlässig verfügbar. Auch dies ist ein Bereich, in dem Sie, wenn Sie Ihren Code posten, leichter mit spezifischen Ratschlägen helfen können. – Paul

+0

Codebeispiel zur Frage hinzugefügt. – Dat8StringGuy

Verwandte Themen