Jab*_*bba 5 input raw-input node.js
我有以下Node.js代码行为奇怪:
#!/usr/bin/env node
"use strict";
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function input(prompt) {
rl.question(prompt, function (x) {
rl.close();
console.log("debug: " + x);
return x;
});
}
function main() {
var n = input("Number: ");
// console.log("value: " + n); // problematic line
}
main();
Run Code Online (Sandbox Code Playgroud)
我想模仿Python raw_input,即从用户那里读取一行.显示提示后,应阻止程序,直到用户按Enter键.
如果"有问题的行"在注释中,它可以工作,程序正在等待输入.但是,如果此行不在注释中,则程序不会等待输入并n变为undefined.为什么?如何编写一个返回用户输入的函数?
这是因为您期望执行输入等待,直到调用 return 为止,这不是它的工作方式。有问题的行确实是前一行。首先,输入不返回任何内容,返回语句是问题回调函数的返回,但是,您似乎误解了执行流程,正如我们在某些时候都会遇到的那样(在一些死后您会很快得到它)像这样结束)
你可能想这样做:
#!/usr/bin/env node
"use strict";
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function input(prompt, callback) {
rl.question(prompt, function (x) {
rl.close();
callback(x);
});
}
function main() {
var n = input("Number: ", console.log);
}
main();
Run Code Online (Sandbox Code Playgroud)
如果您是 javascript 和 Node 的新手,您可能会发现使用learnyounode和Node 代码学校路径非常有用,甚至,如果您有时间、金钱和机会,请阅读Node.js、MongoDB 和 AngularJS Web 开发,布拉德·戴利着。
| 归档时间: |
|
| 查看次数: |
5992 次 |
| 最近记录: |