JS | Как итеративно запускать функции с помощью asyn c await - PullRequest
0 голосов
/ 13 июля 2020

У меня есть функция

async function go(text)
{
    var response = await say(text);
    document.write(response + '<br>')
}

И обещание

function say(text)
{
    return new Promise((resolve, reject) => {
        if (enterPressed) resolve(text);
    });
}

Я хочу запускать функцию go каждый раз, когда пользователь нажимает клавишу ввода. Например, сценарий выглядит следующим образом:

go ("hello");
go ("goodbye")

Я не хочу, чтобы эти функции запускались немедленно, я хочу сначала приветствовать, затем ждать ввода, а затем до свидания. Любые методы?

Ответы [ 2 ]

1 голос
/ 13 июля 2020

как насчет:

async function foo() {
    while (true) {
        await go("hello");
        await go("goodbye");
    }
}
foo();
0 голосов
/ 13 июля 2020

Сделал это. Спасибо Сэнди Берковиц.

async function go(text)
    {
        var response = await say(text);
        document.write(response + '<br>')
    }

    function say(text)
    {
        return new Promise((resolve, reject) => {
            document.addEventListener('keydown', (e) => 
            {
                if (e.keyCode == 13)
                {
                    resolve(text);
                }
            })
        });
    }

    async function foo()
    {
        await go('go');
        await go('Hello');
        await go('How are you?')
    }

    foo();
...