Javascript 如何从Node.js中的命令行中仅读取一行,类似于Python';s`input`或C++';s`std::getline`?

Javascript 如何从Node.js中的命令行中仅读取一行,类似于Python';s`input`或C++';s`std::getline`?,javascript,node.js,input,command-line,Javascript,Node.js,Input,Command Line,在Node中,似乎没有一种直接的方法可以轻松地从命令行获取一行 到目前为止,我找到了以下解决方案: readline模块的打开('line',回调)[] readline的问题(q,回调)[] process.stdin.pipe(require('split')()).on('data',callback)[] fs.readFileSync(0).toString[] 但是,以上所有内容都远不如或C++那么直截了当。(此外,我无法使用选项(4)在Windows上工作。) readline方法

在Node中,似乎没有一种直接的方法可以轻松地从命令行获取一行

到目前为止,我找到了以下解决方案:

  • readline
    模块的
    打开('line',回调)
    []
  • readline
    问题(q,回调)
    []
  • process.stdin.pipe(require('split')()).on('data',callback)
    []
  • fs.readFileSync(0).toString
    []
  • 但是,以上所有内容都远不如或C++那么直截了当。(此外,我无法使用选项(4)在Windows上工作。)


    readline
    方法可能是最好的,但它需要使用
    回调
    这一事实令人沮丧。

    将专用
    readline
    模块的功能包装在promises中可能仍然是最好的方法。这里我们模拟Python的
    input
    和C++的
    getline
    功能

    注意,节点事件不仅有一个
    on
    函数,还有一个函数

    //input.js
    const readline=require('readline');
    const cmd=readline.createInterface({
    输入:process.stdin,
    输出:process.stdout
    });
    /**
    *模拟Python的'input'函数。
    */
    导出异步函数输入(提示){
    返回新承诺(r=>cmd.question(prompt,r));
    }
    /**
    *模拟C++的“getline”函数。
    */
    导出异步函数getline(){
    返回新承诺(r=>cmd.once('line',r));
    }
    
    //main.js
    异步函数main(){
    常数x=等待输入('x是什么?');
    console.log('x is',x);
    console.log('y是什么?');
    const y=wait getline();
    console.log('y is',y);
    }
    main();