Как работает ожидание в асинхронной функции? - PullRequest
0 голосов
/ 11 марта 2019
async function getName() {
    const abcd = await getTime();
    console.log("World");
}

function getTime() {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log("Hello, ");
        }, 1000);
    })
}

getName();

Я ожидал, что через секунду Hello, затем World печатает, к сожалению, вывод только Hello, почему?

1 Ответ

2 голосов
/ 11 марта 2019

Пока вы не resolve, функция Promise getTime никогда не вернется.

Следовательно, await getTime() никогда не разрешится и будет всегда ждать ответа.

ЕслиВы вызываете resolve() после console.log, после чего getTime разрешается, и поэтому функция getName может продолжаться в консольном журнале "Мир".

async function getName() {
    const abcd = await getTime();
    console.log("World");
}

function getTime() {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log("Hello, ");
            resolve();
        }, 1000);
    })
}

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