0

我正在使用 Dexie.js 处理索引存储。但是,它将接管延迟承诺启动的任何进程的异常处理。这使得很难捕获它们发生的错误。

4

2 回答 2

0

如果您需要调试代码并在发生错误时中断,您也可以在基于 Promise 的代码中执行此操作,而无需执行建议的解决方法。

在 Chrome 的 F12 调试器中,选中“在捕获异常时暂停”。还要确保将第 3 部分库黑盒化,这样您就不会最终破坏 babel、jquery、dexie 中的功能测试。这只需通过右键单击脚本代码上的某处(当调试器进入它时)并选择“黑盒”来完成。(但请确保不要黑箱您自己的代码!)

现在调试器会在代码中发生错误时中断,无论它是从 Promise 回调启动的。

于 2016-11-15T12:41:33.827 回答
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);
}

这样promise函数就完成了,Dexie.js对此很满意,然后在超时时开始一个新的,Dexie(或任何其他promise风格的处理程序)不再关心了。

于 2016-11-15T12:22:02.037 回答