約束reject()
コールバックが呼び出されると、警告メッセージ"Uncaught(promise)"がChromeコンソールに表示されます。私はその背後にある理由のまわりで私の頭をラップすることはできません、またそれを取り除くためにどのように。Promise reject()により "Uncaught(promise)"の警告が発生する
var p = new Promise((resolve, reject) => {
setTimeout(() => {
var isItFulfilled = false
isItFulfilled ? resolve('!Resolved') : reject('!Rejected')
}, 1000)
})
p.then(result => console.log(result))
p.catch(error => console.log(error))
警告:
編集:私はonRejected
ハンドラが明示的に.then(onResolved, onRejected)
メソッドに提供されていない場合は、JSは自動的に暗黙の1を提供することが分かった
。 (err) => throw err
:それはこのようになります。自動生成されたハンドラが順番にスローされます。
参考:IsCallableは(がをonRejected) `偽ある場合
、その後、
はがは "投げる人" でonRejectedしてみましょう。
http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performpromisethen
あなたはtrincotありがとうございます。私はいくつかの余分な研究を行い、onRejectedハンドラが明示的に渡されない場合、JSは暗黙的なものを提供することを発見しました: If IsCallable(onRejected)が** false **の場合 'onRejected'を" ** Thrower ** " 'のarg => '()=> {}は'この動作をオーバーライドすることができますarg' 空onRejectedハンドラを投げる:次のようになります 。しかし、「ヌル」はそうしません。 _ref:http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performpromisethen_ –
どういたしまして、とECMAScriptの仕様に素敵な言及!私は完全性のためにこれを私の答えに加えました。すばらしいです! – trincot
@trincot私はそれを連鎖させて、まだキャッチしていないエラーメッセージを返します –