这就是我目前的上传功能的样子。我正在使用阿波罗突变来上传文件。
我不明白如何正确使用承诺的尝试/捕获和捕获(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
函数也会通过async
返回承诺。因此,调用代码应该适当地处理它。