#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.
Смотрите также: