return 在 Typescript 的嵌套箭头函数中响应的最佳方式

Best way to return response within nested arrow functions in Typescript

在 Typescript 中有一个嵌套的异步函数,我想 return 一个对象的承诺。

  1. 我是否需要两个函数都包含一个“catch”,其中我 return a promise.reject() 还是我只需要一个 Catch?
  2. 这种格式仍然给我一个错误“声明类型既不是 'void' 也不是 'any' 的函数必须 return 一个值”,因为没有 [=23] =] 函数外的语句。即使在整个过程中使用 try catch 也会给我同样的错误。
    async getContactByGUIDQuery(GUID: string): Promise<Contact> {
        this.findContactByGUID(GUID).then(async (query) => {
            this.querySalesforce(query).then(async (response) => {
                return response.compositeResponse[0].body
            }).catch((err) => {
                return Promise.reject(err)
            })
        }).catch((err) => {
            return Promise.reject(err)
        }) 
    }

因为您有 async 关键字,我假设您可以在您的环境中使用 await。这让事情变得简单多了。

我相信这个函数做的事情完全一样。

  async getContactByGUIDQuery(GUID: string): Promise<Contact> {
    const query = await this.findContactByGUID(GUID)
    const response = await this.querySalesforce(query)
    return response.compositeResponse[0].body
  }

一个 async 函数 returns 一个承诺,如果 await 在你的函数中遇到一个被拒绝的承诺,它也会拒绝并返回那个错误。

所以你根本不需要在这里捕捉和手动拒绝任何东西。让 async/await 按预期工作。