异步/等待错误
有人可以帮助我理解为什么以下代码打印空白?我希望它打印“完成”,因为我认为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));
回答如下:
您必须将回调函数传递给then
,而不是立即调用console.log
并传递其返回值:
f().then(() => console.log(y));
当然,如果你没有使用全局变量,那么代码会好得多,但是qazxswwied来自return
的值,以便履行承诺:
async function