Javascript异步/等待回调函数

时间:2020-02-19 18:09:05

标签: javascript

我想知道async / await在以下两个“超基本”示例中的行为是否相同:

async function blah1() {
  return await foo.bar().then('Done');
}

是这样

async function blah2() {
  return blah3(foo.bar());
}

async function blah3(fn) {
  return await fn.then('Done');
}

还是有一些重要的区别?

  • 是的,我知道'return await'是多余的,但在此示例中我将其留在了:)

1 个答案:

答案 0 :(得分:2)

async function blah1() {
  return await foo.bar().then('Done');
}

blah1()

调用foo.bar,返回一个承诺,并向其中添加一个then

返回的结果是诺言。

async function blah2() {
  return blah3(foo.bar());
}

async function blah3(fn) {
  return await fn.then('Done');
}

blah2()

调用foo.bar,返回一个承诺,该承诺传递给blah3,后者添加一个then

由此产生的承诺从blah3返回到blah2,并由此返回给调用者。

我会说没有有意义的行为差异。