我使用Dexie.js处理索引存储。但是,它将接管延迟承诺启动的任何进程的异常处理。这使得很容易发现它们发生的错误。
答案 0 :(得分:0)
这是有效的。如果这是一个好主意,我很乐意得到其他开发者的意见。
function isolate(deferred) {
return {
exec: function() {
var args = arguments;
var timeout = setTimeout(function() {
deferred.apply(this, args);
clearTimeout(timeout);
},1);
}
};
}
function save(name, drawing, data, onComplete) {
return db.drawings.put(
{ name: name, drawing, data: data
).then(isolate(onComplete).exec);
}
这样Prom函数就完成了,Dexie.js非常高兴,然后在超时时启动一个新的,Dexie(或任何其他承诺风格的处理程序)不再关心。
答案 1 :(得分:0)
如果您需要调试代码并在发生错误时中断,您也可以在基于Promise的代码中执行此操作,而无需执行建议的解决方法。
在Chrome中的F12调试器中,选中“暂停捕获的例外”。还要确保blackbox第三部分库,这样你就不会破坏babel,jquery,dexie中的特征测试。这可以通过右键单击脚本代码上的某个位置(当调试器进入它时)并选择“blackbox”来完成。 (尽管不要将你自己的代码黑盒化!)
现在调试器会在代码中发生错误时中断,无论它是否从promise回调中启动。