异步功能如何工作?

时间:2019-03-11 16:34:56

标签: javascript async-await

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

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

getName();

我希望在一秒钟之后,您好,然后世界打印出来,不幸的是输出仅是Hello,为什么?

1 个答案:

答案 0 :(得分:2)

直到您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();