Mik*_*erg 8 javascript google-chrome promise es6-promise
如果我在Chrome中看到了开发人员工具并且拒绝了Promise,那么Chrome会暂停javascript执行,并显示消息"Paused on promise rejection".我可以在某种程度上阻止Chrome在这种情况下暂停(并且仍然打开devtools)吗?
拒绝承诺是我的应用程序中"正常"流程的一部分,每次发生时都按Chrome中的恢复按钮是不方便的.
您可以在js-console中输入以下内容,在Chrome中测试此行为:
new Promise(function(accept, reject) { reject(); }) // (tested in v 45.0.2454.99)
Run Code Online (Sandbox Code Playgroud)
谢谢.
Ben*_*aum 22
Chrome只会在"来源"标签中启用"暂停未捕获的异常"时执行此操作.
如果你取消它,它不会在错误上暂停.
承诺拒绝在概念上是一个错误.这是对它进行心理建模的正确方法,否则以下是无声错误:
Promise.resolve().then(function(){
JSON.prase("{}"); // unhandled rejection, TypeError, typo
foooooo = 15; // unhandled ReferenceError, undefined
});
Run Code Online (Sandbox Code Playgroud)
等等.
如果你想明确地抑制拒绝,这类似于同步"全部捕获",你将在同步代码中做同样的事情:
try {
doSomething();
} catch(e){
// explicitly ignore all errors.
}
Run Code Online (Sandbox Code Playgroud)
承诺:
doSomething().catch(function(){}); // explicitly don't report rejection
Run Code Online (Sandbox Code Playgroud)