相关疑难解决方法(0)

如何在nodejs中获取同步readline或使用异步“模拟”它?

我想知道是否有一种简单的方法来获取“同步” readline或至少在node.js中获得同步I / O的外观

我用这样的东西,但是很尴尬

var readline = require('readline');
var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
});

var i = 0;
var s1 = '';
var s2 = '';

rl.on('line', function(line){
    if(i==0) { s1 = line; }
    else if(i==1) { s2 = line; }
    i++;
})

rl.on('close', function() {
    //do something with lines
})'
Run Code Online (Sandbox Code Playgroud)

取而代之的是,我希望它像这样简单

var s1 = getline(); // or "await getline()?"
var s2 = getline(); // or "await getline()?"
Run Code Online (Sandbox Code Playgroud)

有用的条件:

(a)建议不要使用外部模块或/ dev / stdio文件句柄,我正在向代码提交网站提交代码,但这些代码在那儿不起作用

(b)可以使用异步/等待或生成器 …

readline node.js

11
推荐指数
6
解决办法
1万
查看次数

在nodejs中rl.close()发出后,readline不会停止读取行

我有以下文件我想逐行阅读并在找到"nameserver 8.8.8.8"后停止阅读.

nameserver 8.8.8.8
nameserver 45.65.85.3
nameserver 40.98.3.3
Run Code Online (Sandbox Code Playgroud)

我正在使用nodejs和readline模块这样做

const readline = require('readline');
const fs = require('fs');

function check_resolv_nameserver(){
  // flag indicates whether namerserver_line was found or not
  var nameserver_flag = false;

  const rl = readline.createInterface({
    input: fs.createReadStream('file_to_read.conf')
  });

  rl.on('line', (line) => {
    console.log(`Line from file: ${line}`);
    if (line === 'nameserver 8.8.8.8'){
      console.log('Found the right file. Reading lines should stop here.');
      nameserver_flag = true;
      rl.close();
    }
  });

  rl.on('close', function(){
    if (nameserver_flag === true){
      console.log('Found nameserver 8.8.8.8');
    }
    else {
      console.log('Could …
Run Code Online (Sandbox Code Playgroud)

readline node.js

7
推荐指数
2
解决办法
5576
查看次数

标签 统计

node.js ×2

readline ×2