Po wywołaniu oddzwonienia reject()
pojawia się komunikat ostrzegawczy "Uncaught (in promise)" pojawia się w konsoli Chrome. Nie mogę owinąć głowy wokół przyczyny tego, ani tego, jak się go pozbyć.Promise reject() powoduje ostrzeżenie "Niepogoda (w obietnicy)"
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))
Ostrzeżenie:
Edit:
I okazało się, że jeśli obsługi onRejected
nie jest to wyraźnie przewidziane metody .then(onResolved, onRejected)
, JS automatycznie zapewni niejawny jednego . Wygląda to tak: (err) => throw err
. Automatycznie wygenerowany handler rzuci z kolei.
referencyjny:
Jeśli IsCallable (onRejected) `jest fałszywy, następnie
Niech onRejected być "Thrower".
http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performpromisethen
Dziękuję trincot. Zrobiłem kilka dodatkowych badań i dowiedziałem się, że jeśli operacja onRejected nie zostanie jawnie przekazana, JS dostarczy niejawny: 'Jeśli IsCallable (onRejected)' to ** false **, to Niech 'onRejected' będzie" ** Thrower ** ". To wygląda mniej więcej tak: 'arg => throw arg' Pusty onRejected handler'() => {} 'może nadpisać to zachowanie. Ale 'null' nie będzie. _ref: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performpromisethen_ –
Nie ma za co, i miłe odniesienie do specyfikacji EcmaScript! Dodałem to do mojej odpowiedzi na pytanie o kompletność. Wspaniały! – trincot
@trincot Mam go powiązana i nadal daje mi niezatarty komunikat o błędzie –