Javascript 如何将同步期间发生的更改保存在DBChangeTracker中?

Javascript 如何将同步期间发生的更改保存在DBChangeTracker中?,javascript,html,synchronization,local-storage,Javascript,Html,Synchronization,Local Storage,我正在使用Sequesphere作为我的HTML5客户端数据库。我还使用“更改跟踪器”来跟踪我的应用程序正在进行的任何插入、更新和删除。当需要同步更改时,跟踪器会完美地报告更改 问题是:向服务器发送数据是异步的,需要一些时间。在发送数据时,我希望应用程序继续工作,在表中更改更多数据,并让更改跟踪器继续跟踪更改。同步完成后,我调用“tracker.clearChanges()”删除同步到服务器的更改。但是调用“tracker.clearChanges()”将清除所有更改,包括在同步过程中添加但尚未

我正在使用Sequesphere作为我的HTML5客户端数据库。我还使用“更改跟踪器”来跟踪我的应用程序正在进行的任何插入、更新和删除。当需要同步更改时,跟踪器会完美地报告更改

问题是:向服务器发送数据是异步的,需要一些时间。在发送数据时,我希望应用程序继续工作,在表中更改更多数据,并让更改跟踪器继续跟踪更改。同步完成后,我调用“tracker.clearChanges()”删除同步到服务器的更改。但是调用“tracker.clearChanges()”将清除所有更改,包括在同步过程中添加但尚未同步的更改

如何调用“clearChanges()”并仅删除同步的更改?或者,我如何保持同步发生时跟踪器记录的更改

谢谢


比尔·怀特问得好。我建议结束以前的变更跟踪程序,开始一个新的变更跟踪程序,如下所示:

//  Keeps track of trackers
var curTrackerNbr = 0;
var curTracker = null;
var syncTracker = null;

function getChangeTracker() {
    return db.changeTrackers.create("orders_tracker_" + curTrackerNbr, ["orders_table", "invoice_table"]);
}

function beginSync() {
    //  end current tracking, start new one
    syncTracker = curTracker;
    syncTracker.endTracking();
    //  creating a tracker automatically turns it on...
    curTracker = getChangeTracker();
    //  Get data to be sync'd
    var syncData = syncTracker.getChangedRows();
    //  Perform sync
    syncDataToServer(syncData, onSyncSuccess, onSyncFailure);
}

function onSyncSuccess() {
    //  remove the syncTracker (for cleaning purposes)
    db.changeTrackers.drop(syncTracker.name);
}

function onSyncFailure() {
    if (window.confirm("Want to try again?")) {
        var syncData = syncTracker.getChangedRows();
        syncDataToServer(syncData, onSyncSuccess, onSyncFailure);
    }
}

//  Now, let's create our first change tracker.
curTracker = getChangeTracker();
我希望上面的代码比我的文字解释得更好

约翰