代码之家  ›  专栏  ›  技术社区  ›  AKnox

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

  •  0
  • AKnox  · 技术社区  · 7 年前

    这两个片段是相同的吗?

    顶部版本在arrow函数中返回一个promise,底部版本不返回任何内容。使用异步时是否有隐式返回,是否应返回空值,是否需要返回常量信息?

    当我看到babel如何翻译它们时,它用生成器替换了async/wait,使它看起来像是我应该返回const信息。

    // 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 回复  |  直到 7 年前
        1
  •  0
  •   patstuart ripper234    7 年前

    Async functions implicitly return a promise.

    从一个承诺返回值会将该值作为参数传递给下一个承诺(如果该承诺是 chained .

    如果你没有在第一个承诺之后链接任何东西,那么返回值将被忽略,并且没有必要包括它。

        2
  •  0
  •   AKnox    7 年前

    没有隐式返回,但任何返回的值都包含在承诺中。