异步/等待错误

问题描述 投票:-2回答:1

有人可以帮助我理解为什么以下代码打印空白?我希望它打印“完成”,因为我认为await将使程序等待承诺解决。

谢谢您的帮助!

var y = '';
async function f() {

      let promise = new Promise((resolve, reject) => {
        setTimeout(() => resolve("done!"), 1000)
      });

      let result = await promise; // wait till the promise resolves (*)
      y = result;

    }

    f().then(console.log(y));
javascript node.js asynchronous async-await
1个回答
3
投票

您必须将回调函数传递给then,而不是立即调用console.log并传递其返回值:

f().then(() => console.log(y));

当然,如果你没有使用全局变量,那么代码会好得多,但是qazxswwied来自return的值,以便履行承诺:

async function
© www.soinside.com 2019 - 2024. All rights reserved.