Я не могу заставить функцию async / await работать должным образом - PullRequest
0 голосов
/ 11 апреля 2019

Я впервые пишу некоторый код в nodejs (и javascript) и не могу понять, как работает async / await, даже после тестирования кода на этом форуме по этой теме. Я просто не могу понять, что я делаю неправильно.

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

function myFunctionWithCallBack(time){
    console.log("Started: " + time);
    setTimeout(() => {
        console.log("Callback: " + time);
        return ("Return: " + time);
    }, time)
}

async function executeAsyncTask() {
    let value = await myFunctionWithCallBack(2000);
    console.log(value);
    value = await myFunctionWithCallBack(5000);
    console.log(value);
}

executeAsyncTask();

/*
**Actual result:**
Started: 2000
undefined
Started: 5000
undefined
Callback: 2000
Callback: 5000

**Desired result:**
Started: 2000
Callback: 2000
Return: 2000
Started: 5000
Callback: 5000
*/

1 Ответ

0 голосов
/ 11 апреля 2019

Как я уже говорил в комментариях, async / await работает с Promises, а не с обратными вызовами, которые представляют собой другой тип асинхронных функций.

Ваш код будет выглядеть так с Обещаниями:

function myFunctionWithCallBack(time){
    console.log("Started: " + time);
    return new Promise(resolve =>
    setTimeout(() => {
        console.log("Callback: " + time);
        resolve("Return: " + time);
    }, time)
  )
}

async function executeAsyncTask() {
    let value = await myFunctionWithCallBack(2000);
    console.log(value);
    value = await myFunctionWithCallBack(5000);
    console.log(value);
}

executeAsyncTask();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...