如何正确使用try/catch,promise catch和async功能?



这就是我目前的上传功能的样子。我正在使用阿波罗突变来上传文件。

我不明白如何正确使用承诺的尝试/捕获和捕获(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')
  }
}

asyncawait必须携手使用——这意味着不使用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返回承诺。因此,调用代码应该适当地处理它。

最新更新