Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.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
Javascript 如何在Node.js中使用readline模块时添加异步行读取之间的间隔_Javascript_Node.js_Asynchronous_Readline - Fatal编程技术网

Javascript 如何在Node.js中使用readline模块时添加异步行读取之间的间隔

Javascript 如何在Node.js中使用readline模块时添加异步行读取之间的间隔,javascript,node.js,asynchronous,readline,Javascript,Node.js,Asynchronous,Readline,我可以在Node.js中逐行传输文件,如下所示: var rd = readline.createInterface({ input: fs.createReadStream('/path/to/file'), output: process.stdout, terminal: false }); rd.on('line', function(line) { console.log(line); }); 是否有一种方法可以在每个console.log()调用之间添加一个间隔,

我可以在Node.js中逐行传输文件,如下所示:

var rd = readline.createInterface({
  input: fs.createReadStream('/path/to/file'),
  output: process.stdout,
  terminal: false
});

rd.on('line', function(line) {
  console.log(line);
});
是否有一种方法可以在每个
console.log()调用之间添加一个间隔,同时使整个过程异步

意味着从程序的任何其他部分生成的任何日志语句都会在控制台上发布,并与来自读线的语句混合在一起


我的服务器正在侦听需要发布的传入邮件。当它们进入时,只有在
readline
读取了整个文件后才会发布

每个消息仅在1秒内处理

// debounce function - await fn call with timeout
// credits: https://remysharp.com/2010/07/21/throttling-function-calls
function debounce(fn, delay) {
  var timer = null;
  return function() {
    var context = this,
      args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function() {
      fn.apply(context, args);
    }, delay);
  };
}
rd.on('line', debounce(function(line) {
  console.log(line);
}, 1000)); // <== call fn only within 1sec

每条消息仅在1秒内处理

// debounce function - await fn call with timeout
// credits: https://remysharp.com/2010/07/21/throttling-function-calls
function debounce(fn, delay) {
  var timer = null;
  return function() {
    var context = this,
      args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function() {
      fn.apply(context, args);
    }, delay);
  };
}
rd.on('line', debounce(function(line) {
  console.log(line);
}, 1000)); // <== call fn only within 1sec

你想达到什么目的?也许有另一种方法可以做到这一点,其要点是我在产生两种信息。一个来自静态日志文件,另一个来自客户端。对于这个文件,我只是使用readline遍历了文件中的每一行。但这个文件可能非常大,所以来自客户端的任何传入消息也需要在它们到来时发布。当来自客户端的消息传入时,我想暂停来自文件的readline,然后在发布客户端消息时从同一位置恢复。可以暂停传入消息,但如何判断消息已在控制台上发布。如果我将事情进一步复杂化,请道歉:)是否要限制控制台日志?对于readline输出,是的。但也要让它不受阻碍。你想实现什么?也许有另一种方法可以做到这一点,其要点是我在产生两种信息。一个来自静态日志文件,另一个来自客户端。对于这个文件,我只是使用readline遍历了文件中的每一行。但这个文件可能非常大,所以来自客户端的任何传入消息也需要在它们到来时发布。当来自客户端的消息传入时,我想暂停来自文件的readline,然后在发布客户端消息时从同一位置恢复。可以暂停传入消息,但如何判断消息已在控制台上发布。如果我将事情进一步复杂化,请道歉:)是否要限制控制台日志?对于readline输出,是的。但也有它的非阻塞性