0

インデックス付きストレージの処理に Dexie.js を使用しています。ただし、延期されたプロミスによって起動されたプロセスの例外処理を引き継ぎます。これにより、バグが発生した場所を特定することが非常に困難になりました。

4

2 に答える 2

0

エラーが発生したときにコードをデバッグして中断する必要がある場合は、提案された回避策を実行しなくても、Promise ベースのコードでそれを行うことができます。

Chrome の F12 デバッガーで、[キャッチされた例外で一時停止する] をオンにします。また、babel、jquery、dexie の機能テストを中断しないように、サード パーティのライブラリを必ずブラックボックス化してください。これは、スクリプト コードのどこかを右クリックして (デバッガーが中断したときに)、"blackbox" を選択するだけで簡単に実行できます。(ただし、自分のコードをブラックボックス化しないでください!)

これで、コードが 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 に答える