这就是我的上传功能目前的样子。我正在使用apollo变异来上传文件。
我不明白如何正确使用try / catch并捕获promise(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')
}
}
答案 0 :(得分:2)
async
和await
必须携手使用 - 这意味着在不使用await
关键字的情况下,不会自动“等待”任何内容。在您的示例中,您只是返回从client.mutate
返回的Promise。
export default async function upload (client) {
try {
return await client.mutate({
mutation: uploadsMutation
});
} catch (error) {
Alert.alert('Error', 'Could not upload files')
}
}
请记住,upload
函数也会通过async
返回Promise。所以调用代码应该适当地处理它。