异步函数是否有隐式返回值

时间:2019-01-26 03:38:33

标签: javascript firebase async-await google-cloud-functions

这两个摘要是否相同?

最上面的版本在arrow函数中返回一个promise,最下面的版本不返回任何内容。使用异步时是否存在隐式返回,我应该返回null,是否需要返回const信息?

当我查看babel的翻译方式时,它将生成器替换为async / await,使其看起来应该返回const info

// t.get() is a promise, set and delete are not

db.runTransaction(t => {
  return t.get(infoRef).then(info => {
    t.set(db.doc(`/users/${uid}`), info.data());
    t.delete(infoRef);
  });
});

db.runTransaction(async t => {
  const info = await info.get(infoRef)
  t.set(db.doc(`/users/${uid}`), info.data());
  t.delete(infoRef);
});

babel link

2 个答案:

答案 0 :(得分:0)

Async functions implicitly return a promise.

如果一个诺言是chained,则从一个诺言中返回一个值会将该值作为下一个参数传递给下一个诺言。

如果您在第一个承诺后实际上没有链接任何东西,那么返回值将被忽略,也没有必要包含它。

答案 1 :(得分:0)

没有隐式返回,但是任何返回值都包装在promise中。