Может ли deno передавать события на вход консоли?

#io #deno

Вопрос:

Следующий код работает в узле (я думаю), создавая интерфейс readline и привязывая любые события строки к предоставляемой функции обратного вызова, это действительно хороший неблокирующий способ получения пользовательского ввода, Есть ли у Deno что-то подобное? Каждый пример, который я видел, ждет, пока пользователь что-то введет, вместо того чтобы реагировать на это.

 const readline = require('readline');

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

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


 

Ответ №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.

Смотрите также: