2016-04-11 4 views
4

Я создаю программу для ввода двух чисел из командной строки, а затем покажу там сумму в node.js. Я использую модуль readline для принятия stdin. Ниже мой код.Как взять два последовательных ввода с модулем readline node.js?

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

Почему консоль ввода так чрезмерно сложный в узле. Почему они не могут иметь одну строку. Что мешает этому? –

0

Вложенный код/​​обратного вызова страшны читать и поддерживать, вот более элегантный способ использовать Promise для задавать вопросы с несколькими

узел 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

Код отвечает только arent, потому что они не предоставляют много информации для будущих читателей, пожалуйста, предоставьте некоторое объяснение тому, что вы написали – WhatsThePoint