Gia*_*o M 5 javascript promise async-await react-native
在 ReactNative 组件中,当我按下按钮时,执行此函数时出现“可能的未处理的承诺拒绝”错误:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,因为它在 try / catch 块中。
更新
这是错误函数:
function error(value) {
if (console) {
console.error(value)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是您正在error使用参数重新定义此处的符号catch:
} catch (error) {
error(error);
}
Run Code Online (Sandbox Code Playgroud)
这样就隐藏了你的error()功能。更改为此(两个符号具有不同的名称):
} catch (err) {
error(err);
}
Run Code Online (Sandbox Code Playgroud)
因此,当您尝试调用时,error(error)您正在尝试执行一个非函数,该函数会抛出异常,导致onAdd()拒绝异步函数返回的承诺,并且您在该函数调用上没有.catch()处理程序(因为您不认为它可以拒绝)。而且,只要你的catch()处理程序被编写为不会抛出自身,那么你的承诺就不会拒绝,但你的编码错误导致它抛出。
| 归档时间: |
|
| 查看次数: |
12108 次 |
| 最近记录: |