在 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 之后的错误