![](/img/trans.png)
[英]node.js: take input from file using readline and process I/O in windows command prompt
[英]I want's to take some input from user using Readline in Node Js. And I don't Know where to call the function
我是一个完整的初学者。 因此,在 Stack Overflow 中,我找到了“如何使用 ReadiLine 获取多个输入,但我找不到如何应用这个 function 的解决方案,我把它放在主 function 上,它接受了我的输入,但它不起作用&我的 Output 显示 NaN。谁能帮我解决这个问题..
这是我的代码..
function simpleInterest (money, rate, time) {
simpleInterest=money*rate*time;
return simpleInterest;
}
let money;
let rate;
let time;
'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('Total Money: ', (money) => {
resolve()
})
})
}
const question2 = () => {
return new Promise((resolve, reject) => {
rl.question('Interest Rate: ', (rate) => {
resolve()
})
})
}
const question3 = () => {
return new Promise((resolve, reject) => {
rl.question( 'How Many Years: ', (time) => {
resolve()
})
})
}
const main = async () => {
await question1()
await question2()
await question3()
//Here I'm calling the Function
let profit= simpleInterest(money, rate, time)
console.log("total", profit)
rl.close()
}
main()
你错过了承诺难题的几个关键部分。 resolve()
接受一个可选参数,这是 promise 应该解析到的值。 如果没有参数,promise 将解析为未定义。 例如,从语法上讲,这看起来像resolve(money)
。
第二步是将解析的 promise 的值分配给变量或在表达式中使用它。 例如const money = await question1()
。
可以通过分配给您从回调创建的全局变量来解决这些步骤,但我更喜欢使用将事情保持在本地范围内的 Promise。
另一个容易忽略的细微差别是用户输入作为字符串返回。 您可以使用+
将这些字符串转换为数字。
作为一种优化,您实际上有 3 次具有不同变量名称的相同代码。 这表明将逻辑抽象为 function 的潜在机会,您可以使用不同的参数调用它,避免重复。
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const ask = msg => new Promise(resolve =>
rl.question(msg, response => resolve(response))
);
const simpleInterest = (money, rate, time) =>
money * rate * time
;
const main = async () => {
const money = await ask("Total Money: ");
const rate = await ask("Interest Rate: ");
const time = await ask("How Many Years: ");
console.log(simpleInterest(+money, +rate, +time));
rl.close();
};
main();
现在,还没有添加错误处理,因此您可能需要编写一个循环来不断提示,直到用户输入一个数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.