javascript - 如何正确使用 try/catch、promise catch 和 async 函数?
问题描述
这就是我的上传功能目前的样子。我正在使用阿波罗突变来上传文件。
我不明白如何正确使用 try/catch 和 catch 的承诺client.mutate()
。我还将上传功能声明为async
.
所以我想我把一些东西混在一起了:-(
如何正确捕获错误?
我需要两个渔获吗?如果我使用异步函数,我不应该替换 try/catch 吗?
export default async function upload (client) {
try {
return client.mutate({
mutation: uploadsMutation
}).catch(err => {
console.error(err)
})
} catch (error) {
Alert.alert('Error', 'Could not upload files')
}
}
解决方案
async
并且await
必须一起使用——这意味着没有使用await
关键字就不会自动“等待”。在您的示例中,您只是返回从client.mutate
.
export default async function upload (client) {
try {
return await client.mutate({
mutation: uploadsMutation
});
} catch (error) {
Alert.alert('Error', 'Could not upload files')
}
}
请记住,您的upload
函数也通过 being 返回一个 Promise async
。所以调用代码应该适当地处理它。
推荐阅读
- typescript - tsconfig.json中设置src时是否需要排除node_modules?
- javascript - 如何更改 RMWC 组件的属性?
- node.js - Socket.io-client 未连接到 socket.io 服务器反应和节点(快递)
- java - ConcurrentLinkedQueue 的替代方案,我是否需要使用带锁的 LinkedList?
- amazon-web-services - 以下哪些不是基于全球的 AWS 服务?
- javascript - 使用 JQuery 单击另一个按钮时删除类
- python - 'for' luss 的 Python Selenium 问题
- rust - 进程的命令恐慌无法访问已被使用的文件
- c# - 如何在子接口中提供默认实现?
- excel - 打开 Excel 时内存泄漏 - 导致崩溃