【发布时间】:2021-10-11 14:56:26
【问题描述】:
如果 lunchTime 为 true,则应记录午餐对象,如果应为 false err。
控制台正在记录:错误:OOOOOPs
即使我尝试在 then 语句中记录午餐对象,它也只会记录错误消息
我的计划是手动将 lunchTime 的值切换为 false,以便我可以测试 解决/拒绝部分承诺,但它正在运行代码的捕获部分,即使它应该解决。
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(() => {
console.log(resolve);
}).catch(() => {
console.log(Error('OOOOOPs'));
})
【问题讨论】:
-
orderMeSomeFood返回的 Promise 没有拒绝。它在console.log(resolve);中引发异常,因为resolve没有在那里定义。 (记录传递给.catch()的参数会显示给您。) -
我应该如何使用 then catch 语句在 true 时记录午餐对象,在 false 时记录错误消息?
-
您的编辑又错了(现在
err也未定义)。来自 Promise 函数内部的值不在 then/catch 回调的范围内,因为您将它们命名为相同。您需要将它们作为参数获取 -
请不要在提供答案后更改问题中的代码,因为这可能会破坏人们已经对您的原始问题做出的贡献。下面的两个答案中提供了您需要了解的有关原始代码的所有信息。
标签: javascript jquery ecmascript-6 es6-promise