使用async / await可能出现未处理的Promise拒绝

时间:2018-03-24 20:40:22

标签: javascript react-native promise async-await

在ReactNative组件中,当我按下一个按钮时,我得到了"可能未处理的承诺拒绝"执行此函数时出错:

def teform(txt):

    if x = "オンにして":
        return " して"
    elif y = "つけて":
        return " つけて"
    elif z = "付けて":
        return " 付けて"
    else: 
        return  # ...(not sure what goes here)

我不知道为什么因为它在try / catch块中。

已更新
这是错误功能:

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

3 个答案:

答案 0 :(得分:2)

问题是你在这里用error参数重新定义了符号catch

} catch (error) {
    error(error);
}

这样可隐藏您的error()功能。更改为此(两个符号的名称不同):

} catch (err) {
    error(err);
}

因此,当您尝试调用error(error)时,您尝试执行一个非函数,该函数会导致onAdd()拒绝异步函数返回的承诺,并且您不会; t在该函数调用上有一个.catch()处理程序(因为你认为它不能拒绝)。并且,只要您的catch()处理程序被编写为不会自行抛出,那么您的承诺就不会拒绝,但是您的编码错误导致它抛出。

答案 1 :(得分:0)

var result = [] data.forEach(function(ID,NAME,AGE) { result.push(ID) result.push(NAME) result.psuh(AGE) }); 函数本身也返回一个Promise。什么拒绝的一种非常有效的方法是在async的结果中添加.catch。应立即弹出实际错误

答案 2 :(得分:-1)

调用此函数的方法也应该处理错误,可能在您的React类