一旦承諾reject()
回調被調用,警告消息「未捕獲(承諾)」出現在Chrome控制檯中。我無法圍繞它背後的原因,也不知道如何擺脫它。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會自動提供一個隱含的一個。它看起來像這樣:(err) => throw err
。自動生成的處理程序將輪到它。
參考:
如果IsCallable(onRejected)`是假,然後
讓onRejected是 「運動員」。
http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performpromisethen
謝謝trincot。我做了一些額外的研究,發現如果onRejected處理程序沒有明確地通過,JS將提供一個隱含的: '如果IsCallable(onRejected)'爲** false **,則 讓'onRejected'爲** ** Thrower **」。 看起來像這樣:'arg => throw arg' 一個空的onRejected句柄'()=> {}'可以覆蓋這種行爲。但是'null'不會。 _ref:http://www.ecma-international.org/ecma-262/6.0/index.html#sec-performpromisethen_ –
不客氣,對EcmaScript規範有很好的參考!爲了完整起見,我將其添加到了我的答案中。大! – trincot
@trincot我把它鏈接了起來,它仍然給我未被捕獲的錯誤信息 –