如何在Alert确认按钮onPress中使用async/await?解决Promise拒绝报错
解决Alert弹窗确认按钮async/await的未处理Promise拒绝问题
你遇到的「Possible Unhandled Promise Rejection」错误,核心原因是Alert确认按钮的onPress回调中,async函数返回的Promise没有被捕获错误。当deleteteUserApi(auth)(注意函数名疑似拼写错误,应为deleteUserApi)抛出异常时,没有对应的错误处理逻辑,导致Promise被拒绝但无人处理,触发了警告。
以下是两种可行的修复方案:
方案1:用try/catch捕获async函数内的错误
直接在async回调里包裹try/catch块,明确处理成功和失败的场景:
const DeleteAccount = () => { Alert.alert( "Delete account", "If you delete your account, You will lose your current data", [ { text: "Cancel" }, { text: "Delete", onPress: async () => { try { await deleteUserApi(auth); // 修正函数名拼写错误 // 这里可以添加删除成功后的逻辑,比如跳转登录页、清空本地缓存等 } catch (error) { // 处理删除失败的情况,给用户明确提示 Alert.alert("删除失败", `无法删除账户:${error.message}`); } }, }, ], { cancelable: false } ); };
方案2:用Promise链式调用处理错误
如果不习惯async/await,也可以直接用.then()和.catch()链式处理Promise:
const DeleteAccount = () => { Alert.alert( "Delete account", "If you delete your account, You will lose your current data", [ { text: "Cancel" }, { text: "Delete", onPress: () => { deleteUserApi(auth) .then(() => { // 执行删除成功后的操作 }) .catch((error) => { Alert.alert("删除失败", `无法删除账户:${error.message}`); }); }, }, ], { cancelable: false } ); };
另外注意原代码中deleteteUserApi的拼写错误(多了一个te),建议先修正这个拼写问题,避免因函数不存在导致额外错误。
内容的提问来源于stack exchange,提问作者user8282183292
相关产品推荐
相关产品推荐

