suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Nicht abgefangener (In Promise)-Fehler beim Ablehnen eines Promise mit setTimeout() in JavaScript

<p>Ich lerne Promises in JavaScript und habe beschlossen, ein einfaches Promise zu implementieren, bei dem ich ein Timeout von 3 Sekunden festlege und das Promise dann ablehne. Nachdem ich es abgelehnt habe, erkenne ich den Fehler und zeige ihn in einem HTML-Element an. Das Versprechen läuft einwandfrei und zeigt die Meldung an, aber ich erhalte die folgende Fehlermeldung in der Konsole. </p> <pre class="brush:php;toolbar:false;">Uncaught (Versprochen) Ich hasse dich Promise.then (asynchron) (anonym)</pre> <p>Hier ist der Code als Referenz -</p> <p> <pre class="snippet-code-js lang-js Prettyprint-override"><code>const myPromise = new Promise(function(myResolve,ject) { setTimeout(() => { ablehnen('Ich hasse dich'); }, 3000); }); myPromise.then(function(value) { document.getElementById("demo").innerHTML = value; }); myPromise.catch( error => { console.log("Fang es"); document.getElementById("demo").innerHTML = Fehler; });</code></pre> <pre class="snippet-code-html lang-html Prettyprint-override"><code><h2>JavaScript Promise</h2> <p>Warten Sie 3 Sekunden (3000 Millisekunden), bis sich diese Seite ändert.</p> <h1 id="demo"></h1></code></pre> </p> <p>Bitte helfen Sie mir herauszufinden, welchen Fehler ich mache. </p>
P粉139351297P粉139351297450 Tage vor489

Antworte allen(2)Ich werde antworten

  • P粉748218846

    P粉7482188462023-09-06 12:09:35

    这应该有效

    <html>
    
    <body>
    
      <h2>JavaScript Promise</h2>
    
      <p>Wait 3 seconds (3000 milliseconds) for this page to change.</p>
    
      <h1 id="demo"></h1>
    
      <script>
        const myPromise = new Promise(function(myResolve, reject) {
          setTimeout(() => {
            reject('I hate you');
          }, 3000);
        });
    
        myPromise.then(function(value) {
          document.getElementById("demo").innerHTML = value;
        }).catch(error => {
          console.log("Catching it");
          document.getElementById("demo").innerHTML = error;
        });
      </script>
    
    </body>
    
    </html>

    Antwort
    0
  • P粉696891871

    P粉6968918712023-09-06 10:15:51

    myPromise.then(function(value) {
      document.getElementById("demo").innerHTML = value;
    }).catch( error => {
        console.log("Catching it");
        document.getElementById("demo").innerHTML = error;
    });

    您需要捕获 .then 之后的错误

    Antwort
    0
  • StornierenAntwort