Javascript 使用async/await可能未处理的承诺拒绝
在ReactNative组件中,当我按下按钮时,我在执行此函数时出现“可能未处理的承诺拒绝”错误:Javascript 使用async/await可能未处理的承诺拒绝,javascript,react-native,promise,async-await,Javascript,React Native,Promise,Async Await,在ReactNative组件中,当我按下按钮时,我在执行此函数时出现“可能未处理的承诺拒绝”错误: async onAdd(item) { try { const response = await fetch('url', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Ty
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);
}
}
function error(value) {
if (console) {
console.error(value)
}
}
我不知道为什么,因为这是一个尝试/捕获块
更新这是错误函数:
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);
}
}
function error(value) {
if (console) {
console.error(value)
}
}
async
函数本身也返回一个承诺。拒绝的一种非常有效的方法是在onAdd()的结果中添加一个.catch
。实际错误应该立即弹出调用此函数的方法也应该处理错误,可能是在React类上问题是您正在使用catch
参数重新定义符号错误
:
} catch (error) {
error(error);
}
这样就隐藏了error()
函数。更改为(两个符号的名称不同):
因此,当您尝试调用error(error)
时,您正在尝试执行一个非函数,该函数抛出导致onAdd()
拒绝异步函数返回的承诺,并且该函数调用上没有.catch()
处理程序(因为您认为它无法拒绝)。而且,只要您的catch()
处理程序被编写成不会抛出自身,那么您的承诺就不会被拒绝,但是您的编码错误导致它抛出。那么error(error)
很可能抛出异常,因为error
不是函数。您的“error()”方法在做什么?如果它抛出一个错误,那么将添加一个可能重复的。您的代码是否应该使用responseJson
?我调用onpress属性上的函数,onpress={()=>this.onAdd(item)}