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

lunchTime为true时Promise仍进入catch分支报错问题求助

问题根因

你的代码存在3个核心问题,导致始终进入catch分支:

  • 语法错误:Promise构造函数的参数回调额外多写了一个闭合大括号,代码执行时直接抛出语法异常被catch捕获
  • then回调未声明形参接收resolve传递的lunch对象,且直接访问了作用域不存在的resolve变量,触发ReferenceError被catch捕获
  • catch回调未接收reject抛出的错误对象,而是主动新建了Error实例输出,掩盖了实际报错原因

修正后代码

const lunchTime = true;

function orderMeSomeFood() {
    return new Promise((resolve, reject) => {
        if (lunchTime === true) {
            let lunch = {
                food: "BBQ",
                drink: "Zen WTR"
            };
            resolve(lunch);
        } else if (lunchTime === false) {
            const err = new Error('OOOOOPs')
            reject(err);
        }
    })
};

orderMeSomeFood().then((lunch) => { // 接收resolve返回的lunch对象
    console.log(lunch);
}).catch((err) => { // 接收reject抛出的错误对象
    console.log(err);
})

运行效果

  • 当lunchTime = true时,控制台输出:{ food: 'BBQ', drink: 'Zen WTR' }
  • 当lunchTime = false时,控制台输出:Error: OOOOOPs

内容的提问来源于stack exchange,提问作者Wayne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:42:02