return 在 Typescript 的嵌套箭头函数中响应的最佳方式
Best way to return response within nested arrow functions in Typescript
在 Typescript 中有一个嵌套的异步函数,我想 return 一个对象的承诺。
- 我是否需要两个函数都包含一个“catch”,其中我 return a promise.reject() 还是我只需要一个 Catch?
- 这种格式仍然给我一个错误“声明类型既不是 '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
按预期工作。
在 Typescript 中有一个嵌套的异步函数,我想 return 一个对象的承诺。
- 我是否需要两个函数都包含一个“catch”,其中我 return a promise.reject() 还是我只需要一个 Catch?
- 这种格式仍然给我一个错误“声明类型既不是 '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
按预期工作。