Javascript Event.preventDefault似乎不起作用(异步上下文)

Javascript Event.preventDefault似乎不起作用(异步上下文),javascript,firefox,error-handling,promise,unhandled-exception,Javascript,Firefox,Error Handling,Promise,Unhandled Exception,我意识到有一些关于preventDefault不工作的问题。但我的问题是关于一个相当简单的情况,即您有一个async函数并抛出一个错误: throw 'error of some kind'; 。。。然后你需要一个“扫除”函数来捕捉任何和所有这样的错误。然后,这将按预期工作: window.addEventListener('unhandledrejection', function (event) { console.log( 'unhandled Promise rejection

我意识到有一些关于
preventDefault
不工作的问题。但我的问题是关于一个相当简单的情况,即您有一个
async
函数并抛出一个错误:

throw 'error of some kind';
。。。然后你需要一个“扫除”函数来捕捉任何和所有这样的错误。然后,这将按预期工作:

window.addEventListener('unhandledrejection', function (event) {
    console.log( 'unhandled Promise rejection, event: ', event );

    // event.preventDefault();
});
但是如果我取消注释
事件.preventDefault()
,我希望看到
抛出
消息不会作为错误打印到控制台。但它总是被印刷出来

我检查以确保在这种情况下,
事件
确实是可取消的。据说是这样

PS从我的实验看来

window.onunhandledrejection = event => {
    ...
};
只是为相同的“unhandledrejection”事件实现相同侦听器的另一种方法。使用
event.preventDefault()
似乎也不起作用

编辑

经过几次实验后,我似乎发现,我能找到的防止这种情况的唯一方法是在某个点吞下错误(使用
try…catch
),最好是在堆栈中最高的
async
调用(或者更确切地说是在
async
函数的调用序列中),如果可以确定的话

window.addEventListener('unhandledrejection',事件=>{
console.log(event.cancelable,event.reason,“未处理的拒绝”)
event.preventDefault()
event.stopPropagation()
事件.停止立即复制()
返回错误
})
异步函数x(){
console.log('async')
抛出“异步错误”
}
x()
新承诺(res=>{
console.log('prom')
抛出“prom错误”

})
已在Firefox 76上验证。直截了当的承诺也行不通。看起来像只虫子。可能应该向Mozilla的Firefox跟踪器提交一个问题。
注意:这不是一个解决方案。除了归档一个bug并将其修复外,是否还有其他解决方案值得怀疑

window.onerror=msg=>console.log(msg)| false
addEventListener('unhandledrejection',事件=>{
console.log(event.cancelable,event.reason,“未处理的拒绝”)
event.preventDefault()
event.stopPropagation()
事件.停止立即复制()
返回错误
})
异步函数x(){
console.log('async')
抛出“异步错误”
}
x()
新承诺(res=>{
console.log('prom')
抛出“prom错误”

})
在哪个浏览器下?在Chrome81下为我工作。发布一个可运行的堆栈片段,展示您的意思。注意:语法错误等错误是语言级别的,不会在运行时抛出,因此不会引发。谢谢。火狐72。我会尽快找出一个片段。这是一条常规的
抛出
+字符串消息,如上所示。已在Firefox 76上验证。直截了当的承诺也行不通。看起来像只虫子。可能应该向Firefox tracker提交一个问题。我在Firefox中报告了一个错误:注意,传播已正确停止:只有记录错误的默认行为未被阻止。感谢您的帮助。正如我所说,“停止传播”命令似乎都不起作用,也不返回
false