【问题标题】:Do we need to wrap return value into promise using async/await?我们是否需要使用 async/await 将返回值包装到 Promise 中?
【发布时间】:2018-08-28 23:16:57
【问题描述】:

只是想了解在异步函数中返回值时使用 async/await 的正确方法。为异步函数编写代码并使用 promise 返回值的正确方法是什么?

main.ts

private async customerResponse(data: any): Promise < any > {

    const custObject: any = data;

    Promise.resolve(custObject);
    Or 
    return custObject;


}

【问题讨论】:

  • 我不确定 typescript,但在 JavaScript 中,async 关键字已经确保任何立即返回的值都包含在已解析的 Promise 中。
  • 您在other question 上不相信我的话(特别是因为我提供了working link)有什么特别的原因吗?
  • 您提供的示例很难理解,所以我问了另一个与该问题相关的问题。
  • @hussain 它实际上只是一个异步函数,它返回一个字符串,then 打印到控制台。我什至添加了返回类型注释以显示类型检查。我怎样才能让它变得更简单?

标签: javascript typescript async-await


【解决方案1】:

async 函数返回一个承诺。此外,如果您需要await 关键字,则只需要使用async。如果您不使用await,请不要使用async

async 函数的返回值在使用Promise.resolve 时被有效地解包到一个级别(我认为这是Promise.resolve 功能的一部分),因此返回Promise.resolve(value) 或仅返回没有区别value(或Promise.resolve(Promise.resolve(value)))。也就是说,您应该简单地从 async 函数返回所需的返回值,而不必担心进行任何额外的包装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 2021-08-09
    • 2021-09-04
    • 1970-01-01
    • 2022-08-22
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多