一旦承诺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我把它链接了起来,它仍然给我未被捕获的错误信息 –