Javascript 使用async/await可能未处理的承诺拒绝

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

在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);
    }
}
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)}