我在JS中学习异步,并且遇到了Async / Await。然后,我遇到了以下代码:
function scaryClown() {
return new Promise(resolve => {
setTimeout(() => {
resolve('🤡');
}, 2000);
});
}
async function msg() {
const msg = await scaryClown();
console.log('Message:', msg);
}
msg(); // Message: 🤡 <-- after 2 seconds
因此,我对以上代码有疑问。首先,如果函数本身仅返回未定义的Promise,即函数未明确使用return关键字,则异步函数msg()如何返回消息值。其次,等待是否返回Promise或已从Promise中解开的价值本身?
function scaryClown() {
return new Promise(resolve => {
setTimeout(() => {
resolve('🤡');
}, 2000);
});
}
上述函数是一个在被调用时会返回promise的函数,但仅在2秒后才能解决。
async function msg() {
const msg = await scaryClown();
console.log('Message:', msg);
}
上面的函数是异步函数,它正在等待兑现诺言(在您的情况下为2秒钟),只有console.log()会触发。