Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在nodejs中同步接受命令行输入的最佳方法?_Node.js - Fatal编程技术网

Node.js 在nodejs中同步接受命令行输入的最佳方法?

Node.js 在nodejs中同步接受命令行输入的最佳方法?,node.js,Node.js,同步接受nodejs中一系列命令行输入的最佳方式是什么 就像程序会打印一样 Enter Value for variable one 然后用户输入值,然后命令行应该请求第二次输入,如 Enter Value for variable two 依此类推,根据您的具体需要,您可以创建自己的REPL 只需调用带有提示选项的repl.start(),并使用您自己的自定义eval和writer回调 repl.start({ prompt: 'Enter value: ', eval:

同步接受nodejs中一系列命令行输入的最佳方式是什么

就像程序会打印一样

Enter Value for variable one
然后用户输入值,然后命令行应该请求第二次输入,如

Enter Value for variable two

依此类推,根据您的具体需要,您可以创建自己的REPL

只需调用带有提示选项的
repl.start()
,并使用您自己的自定义
eval
writer
回调

repl.start({
    prompt: 'Enter value: ',
    eval: function (cmd, context, filename, callback) {
         // Do something
        callback(/* return value goes here */); 
    },
    writer: function (data) {
        // echo out data to the console here
    }
});

最简单的方法是,IMHO向用户显示“问题”并等待他的答案。这些问题可以是相同的(类似“>>”的提示),也可以是不同的(例如,如果您想询问一些变量)

要显示这些问题,您可以使用。它是一个简化标准输入/输出管理的模块,其主要功能之一正是您想要的:

var stdio = require('stdio');
stdio.question('What is your name?', function (err, name) {
    stdio.question('Are you male or female?', ['male', 'female'], function (err, sex) {
        console.log('Your name is "%s". You are "%s"', name, sex);
    });
});
如果运行前面的代码,您将看到如下内容:

What is your name?: John
Are you male or female? [male/female]: female
Your name is "john". You are "female"
stdio
支持在指定一组可能的答案时重试。否则,用户将能够编写他们想要的任何内容

PD:我是
stdio
creator.:-)


Hi@Brad,感谢您的回复,我正在使用以下内容,无法打印数据var repl=require(“repl”);repl.start({prompt:'Enter value:',eval:function(cmd,context,filename,callback){callback(/*返回值在这里*/);},writer:function(data){console.log('data is'+data);});但是我得到的数据是未定义的,而且我无法理解repl.start()中的每个选项都做了什么。是否在某个地方对此进行了有效的演示?@nlingutla,如果希望在writer函数中获得可用的数据,则需要使用数据调用回调。如果您接受输入,但不需要任何数据,请将其保留为未定义,并更改writer函数的输出。有关所有选项的说明,请参阅。你在哪些选项上有困难?我不相信那里有示例代码。问题是,对于同步方法,stdio使用回调进行异步执行。