【问题标题】:Can deno emmit events on console input?可以在控制台输入上 deno emmit 事件吗?
【发布时间】:2021-07-01 04:13:03
【问题描述】:

以下代码通过(我认为)创建一个 readline 接口并将任何行事件绑定到提供的回调函数在 node 中工作,它是一种非常好的非阻塞方式来获取用户输入,Deno 有类似的东西吗?我见过的每个示例都等到用户输入内容而不是对其做出反应。

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });

  rl.on('line',(x) => {
    switch(x){
      case "help":
        help()
  });


【问题讨论】:

    标签: io deno


    【解决方案1】:

    JavaScript 中的任何异步函数都可以通过不等待返回的Promise 以非阻塞方式使用。例如使用立即调用的异步函数表达式:

    import { readLines } from "https://deno.land/std@0.100.0/io/mod.ts";
    
    (async function() {
      for await (const line of readLines(Deno.stdin)) {
        switch (line) {
          case "help":
            help();
            break;
        }
      }
    })();
    

    要发出事件,您可以扩展 EventTarget 并调度 CustomEvent 的实例,但如果您的用例足够简单,您可以将代码内联在 for 循环中。

    另见:

    【讨论】:

      猜你喜欢
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2018-05-19
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多