
promise 的 `reject` 分支未被处理,导致错误被静默忽略;必须通过 `.catch()` 捕获拒绝状态,否则控制台可能报错且页面无任何输出。
在你的 HTML 页面中,Promise 确实已正确创建并执行,但它并未“不工作”,而是因条件不满足触发了 reject,而你只监听了 resolve(即 .then()),却忽略了拒绝路径。由于 toldThePeople = "BBQ Cauliflower" 与 order = "BBQ Corn" 不相等,reject("I WANT THE MANAGER!!!") 被调用——此时 .then() 完全不会执行,也不会报错(除非有未捕获的 Promise rejection),因此
✅ 正确做法是:为 Promise 链添加 .catch() 处理拒绝情况:
<script>
let tag = document.getElementById("demo");
function display(value) {
tag.innerHTML = value;
}
let toldThePeople = "BBQ Cauliflower";
let restaurantOrder = new Promise(function (resolve, reject) {
let order = "BBQ Corn";
if (toldThePeople === order) {
resolve("Mmm, You guys did an awesome job!");
} else {
reject("I WANT THE MANAGER!!!");
}
});
// ✅ 必须同时处理 resolve 和 reject
restaurantOrder
.then(display) // 成功时显示
.catch(display); // 失败时也显示(可选:也可用不同样式/逻辑)
</script>? 额外建议与注意事项:
- 在开发阶段,建议始终添加 .catch(),或全局监听未捕获 Promise 错误:
window.addEventListener('unhandledrejection', e => { console.error('Unhandled Promise rejection:', e.reason); }); - 若需区分成功/失败样式,可分别处理:
restaurantOrder .then(value => { tag.innerHTML = `<span style="color:green">${value}</span>`; }) .catch(error => { tag.innerHTML = `<span style="color:red;font-weight:bold">${error}</span>`; }); - 确保 <script> 在 DOM 加载完成后执行(当前代码位于 </script>










