JS中的异步/等待混乱

问题描述 投票:0回答:1

我在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中解开的价值本身?

javascript
1个回答
0
投票
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()会触发。

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