2016-04-11 7 views
4

コマンドラインから2つの数字を入力し、node.jsに合計を表示するプログラムを作成しています。私はstdinを取るreadlineモジュールを使用しています。以下は私のコードです。node.jsのreadlineモジュールで2回連続して入力するには?

const readline = require('readline'); 

const rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

const r2 = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.question('Please enter the first number', (answer1) => { 
    r2.question('Please enter the second number', (answer2) => { 
     var result = (+answer1) + (+answer2); 
     console.log(`The sum of above two numbers is ${result}`); 
    }); 
    rl.close(); 
}); 

このプログラムは、ちょうど私が「最初の番号を入力してください」と私は5のように番号を入力すると、それはまた、第二の入力のために5を受け取り、答え10

を示してそれが第二聞かないで示して質問は全くありません。これをチェックして、問題点を教えてください。複数の入力を取る方が良い場合は、それを教えてください。私はNode.jsの中に初心者ユーザー

答えて

4

ありませんが、ちょうどこのように使用し、別の変数を必要としています

const readline = require('readline'); 

const rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.question('Please enter the first number : ', (answer1) => { 
    rl.question('Please enter the second number : ', (answer2) => { 
     var result = (+answer1) + (+answer2); 
     console.log(`The sum of above two numbers is ${result}`); 
     rl.close(); 
    }); 
}); 
+0

複数の質問をするための約束を使用しますノードでは過度に複雑です。なぜ彼らは1行のコマンドを持つことができません。これを防ぐのは何ですか? –

0

ネストされたコード/コールバックが読んで維持するために恐ろしいです、ここではよりエレガントな方法ですコンソール入力がそうですなぜ

ノード8+

'use strict' 

const readline = require('readline') 

const rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}) 

const question1 =() => { 
    return new Promise((resolve, reject) => { 
    rl.question('q1 What do you think of Node.js? ', (answer) => { 
     console.log(`Thank you for your valuable feedback: ${answer}`) 
     resolve() 
    }) 
    }) 
} 

const question2 =() => { 
    return new Promise((resolve, reject) => { 
    rl.question('q2 What do you think of Node.js? ', (answer) => { 
     console.log(`Thank you for your valuable feedback: ${answer}`) 
     resolve() 
    }) 
    }) 
} 

const main = async() => { 
    await question1() 
    await question2() 
    rl.close() 
} 

main() 
+0

今後の読者に多くの情報を提供しないため、コードのみの回答は推奨されていません。 – WhatsThePoint

関連する問題