You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:42:30