0

本地存储和服务器之间存在同步问题。

国家,城市,用户分别与服务器同步。(单独的ajax调用)

问题是其他 Javascript 代码(Kncokout Bindings 等)必须等待同步过程。或者更好的 javascript 函数必须等待另一个函数。

我该如何实施?

PS:我正在使用 jquery、amplifyjs(用于本地存储交互)、knockoutjs 库。PS2:我需要跨浏览器解决方案:)

编辑 摘要:

我有 3 个 Javascript 函数。他们都使用回调进行异步ajax调用。这些功能可以并行工作。(不必互相等待)

但是代码必须在这3个函数之后才能工作。(因为这些函数正在同步本地存储并且代码使用localstorage)

4

2 回答 2

3

使用延迟对象 and $.when,这是它的主要用途之一。

$.when($.ajax(...),$.ajax(...),$.ajax(...)).done(function(){
    // all three are done
});
于 2013-07-10T14:52:36.843 回答
1

这是实现此功能的一种方法,前提是您同时启动 ajax 调用。一个简单的计数轨道可以解决它 -

var countCalls;

然后在你的ajax相关代码中:

function initAjaxCalls() {

    countCalls = 0; //(re)set counter

    startAjax1(commonCallback); //pseudo call, use commomCallback as callback
    startAjax2(commonCallback);
    startAjax3(commonCallback);

}

在回调中,我们跟踪调用次数:

function commonCallback(e) {

    countCalls++;

    /// when we have reached the max count, perform the sync. step
    if (countCalls === 3) performSyncStorage();
}

这将等到最长的持续操作完成。如果您想将异步操作转换为同步操作,这是必要的。

于 2013-07-10T14:35:00.357 回答