在 JavaScript 中使用 setTimeout() 拒絕 Promise 時未捕獲(In Promise)錯誤
P粉139351297
2023-09-05 17:39:46
<p>我正在學習 JavaScript 中的 Promise,我決定實作一個簡單的 Promise,其中我將設定 3 秒的超時,然後拒絕該 Promise。拒絕它後,我捕獲錯誤並將其顯示在 HTML 元素中。該承諾完美運行並顯示訊息,但我在控制台中收到以下錯誤。 </p>
<pre class="brush:php;toolbar:false;">Uncaught (in promise) I hate you
Promise.then (async)
(anonymous)</pre>
<p>這是您參考的程式碼 -</p>
<p>
<pre class="snippet-code-js lang-js prettyprint-override"><code>const myPromise = new Promise(function(myResolve, reject) {
setTimeout(() => {
reject('I hate you');
}, 3000);
});
myPromise.then(function(value) {
document.getElementById("demo").innerHTML = value;
});
myPromise.catch( error => {
console.log("Catching it");
document.getElementById("demo").innerHTML = error;
});</code></pre>
<pre class="snippet-code-html lang-html prettyprint-override"><code><h2>JavaScript Promise</h2>
<p>Wait 3 seconds (3000 milliseconds) for this page to change.</p>
<h1 id="demo"></h1></code></pre>
</p>
<p>請幫我找出我所犯的錯誤。 </p>
這應該有效
您需要捕獲 .then 之後的錯誤