1
Promiseを使用すると、ブラウザが拒否を2回返すのに、解決を2回返さないのはなぜですか?
javaScriptを理解できませんpromises。次のコードを書きました。 var p = new Promise(function(resolve,reject){ reject(Error("hello world")); }); setTimeout(()=>p.catch(e=>console.log(e)),5000); これはChromeデベロッパーコンソールにすぐに表示されます。 しかし、5秒待った後、メッセージは次の画像のように自動的に黒に変わります。 私のjavaScriptコードと開発者コンソールの間でこの動作を見たことはありません。私のJavaScriptスクリプトは、開発者コンソールで「既存のコンテンツを変更」できます。 そこで、resolve次のコードを記述して、同じ状況が発生するかどうかを確認することにしました。 var p = new Promise(function(resolve,reject){ resolve("hello world"); }); setTimeout(()=>p.then(e=>console.log(e)),5000); しかし、この状況では、私の開発者コンソールには5秒後まで何も表示されず、そこに出力されhello worldます。 とが呼び出されるタイミングの点でresolveとのreject扱いが異なるのはなぜですか? 追加 私もこのコードを書きました: var p = new Promise(function(resolve,reject){ reject(Error("hello world")); }); setTimeout(()=>p.catch(e=>console.log("errors",e)),5000); setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000); setTimeout(()=>p.catch(null),7000); これにより、開発者コンソールにいくつかの出力が発生します。時間0で赤のエラー、時間5秒でテキストに赤が黒に変わりerrors hello world、時間6秒で新しいerrors 2 hello worldエラーメッセージ、時間7秒で赤のエラーメッセージ。今私はreject実際に何回呼び出されるのか非常に混乱しています...私は迷子になっています...