我正在尝试编写一个代码,它可以确定本地存储中是否存在静态数据,而不是不调用 ajax 方法从服务器获取数据,否则它应该调用 ajax api 并将结果存储在本地存储中并将数据返回给它的调用方法。
这是我的代码:
staticService = function (key) {
return $.ajax({
type: 'GET',
url: "xxxxx.ashx/" + key,
dataType: "json",
success: function(result){
store.save(key, result);
}
});
}
var getFromStore = function (key)
{
if (key) {
var result = store.fetch(key);
if (!result) {
staticService(key);
}
return result;
}
}
var staticdata = {
gender: [{value:"M",text:"Male"}, {value:"F",text:"Female"}],
maritalStatus: getFromStore('availableMaritalStatus')
};
问题:ajax 调用是异步的,每当我传递那些不在存储中的键时,它都会返回 null,但是它用于 ajax 调用并将数据存储在 localStorage 中。我需要类似的东西
{
check list from store if exists return the list otherwise call ajax, get the list, store it in localStorage and return to user but without blocking UI
}
如何通过更改代码来实现这一点?最好的做法是什么?
编辑:如何更改 staticdata 变量逻辑,以便我得到 staticdata.maritalStatus 有效数据而不是 null。我正在加载应用程序负载的静态数据。如果我尝试调用 getFromStore 的次数,我不知道我什么时候会从服务器接收数据,因为这将调用大量的成功回调。我希望在所有静态服务成功返回数据时调用静态数据。