typescript - 在 Typescript 的嵌套箭头函数中返回响应的最佳方法
问题描述
在 Typescript 中有一个嵌套的异步函数,我想在其中返回一个对象的承诺。
- 我是否需要两个函数都包含一个“catch”,我返回一个 promise.reject() 还是只需要一个 Catch?
- 这种格式仍然给我一个错误“声明类型既不是'void'也不是'any'的函数必须返回一个值”,因为在函数之外没有返回语句。即使在整个过程中使用 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
函数返回一个承诺,如果await
在你的函数中遇到一个被拒绝的承诺,它也会拒绝这个错误。
所以你根本不需要在这里捕获和手动拒绝任何东西。让async/await
他们按照他们的意图工作。
推荐阅读
- python - 无法导入我在 PATH 和 PYTHONPATH 中的模块
- java - 当我尝试使用 Jsoup 在课堂上获取超过 1 个文档时,为什么会出现 handshake_failure 错误?
- python - DRF 中的 CART 功能
- python-3.x - 如何使用正则表达式计算文本文件中出现的所有短语?
- openmdao - 轨迹中链接的 OpenMDAO 阶段是否需要具有相同的转录?
- java - 使用 JAXB XMLStreamReader 防止 XXE 攻击
- python - Sympy Linsolve 出乎意料的结果
- java - Launch4j 不显示 UTF-8 字符
- javascript - 如何在输入字段中写入值帮助数据?
- scala - IntelliJ IDEA 2020.3 Scala 插件不适用于新项目