localstorage与服务器之间存在同步问题。
国家/地区,城市,用户与服务器分开同步。(分离ajax呼叫)
问题是其他Javascript代码(Kncokout Bindings等)必须等待同步过程。或者更好的javascript函数必须等待另一个。
我该如何实施?
PS:我正在使用jquery,amplifyjs(用于localstorage交互),knockoutjs库。 PS2:我需要跨浏览器解决方案:)
修改 总结:
我有3个Javascript函数。所有这些都使用回调进行异步ajax调用。 这些函数可以并行工作。(不必等待彼此)
但代码必须在这3个函数之后工作。(因为这些函数正在同步本地存储,代码使用localstorage)
答案 0 :(得分:3)
使用延迟对象和$.when
,这是其中一个主要用途。
$.when($.ajax(...),$.ajax(...),$.ajax(...)).done(function(){
// all three are done
});
答案 1 :(得分: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();
}
这将等到持续时间最长的操作完成。如果要将异步操作转换为同步操作,则必须执行此操作。