在 ReactNative 组件中,当我按下按钮时,我在执行此函数时收到“可能未处理的 promise 拒绝”错误:
async onAdd(item) {
try {
const response = await fetch('url', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
event_id: item.id,
event_type: item.event_type,
})
});
const responseJson = await response.json();
} catch (error) {
error(error);
}
}
我不知道为什么,因为它在 try/catch block 中。
已更新
这是错误函数:
function error(value) {
if (console) {
console.error(value)
}
}
最佳答案
问题是您在此处使用 catch
参数重新定义符号 error
:
} catch (error) {
error(error);
}
这样就隐藏了你的 error()
函数。更改为(两个符号的名称不同):
} catch (err) {
error(err);
}
因此,当您尝试调用 error(error)
时,您正在尝试执行一个抛出异常的非函数,这会导致 onAdd()
拒绝 promise 异步函数返回并且您在该函数调用上没有 .catch()
处理程序(因为您认为它不会拒绝)。而且,只要您编写的 catch()
处理程序不会抛出自身,那么您的 promise 就不会拒绝,但您的编码错误会导致它抛出。
关于javascript - 使用 async/await 可能出现未处理的 Promise 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49469708/