我在全局緩存變量中使用jQuery維護JavaScript中的緩存。在js中同步管理緩存
每當使用AJAX收到新信息時,它都會被添加到緩存中。
如果它不在緩存中,我想從服務器AJAX它。
我想實現一個功能,按需查詢和使用它像這樣:
$("#label").html(GetName("user123"));
其中的GetName()應該是這樣的:
function GetName(username) {
if (Cache[username] != null) return Cache[username];
else
return QueryUsernameFromServer(username)
}
QueryUsernameFromServer()應該是這樣的:
function QueryUsernameFromServer (username) {
return $.ajax(…);
}
但是,$ .ajax是異步的意思,它不能等待一個值(因此不能返回它)。
使用$就在同步模式強烈不推薦(瀏覽器掛起,它不支持JSONP),http://api.jquery.com/jQuery.ajax/
利用這一點,http://www.techfounder.net/2008/05/17/simple-javascript-cache/,方法需要回調。但是,不希望爲每次使用創建回調。
有沒有一種很好的方式來實現js和ajax中的「按需緩存」功能,而不需要每次使用專用的回調?
+1。這完全是我用於我們的數據提供者的工作。我喜歡有一個數據層,以便我們可以重用它並在一個位置更新所有'ajax'代碼(例如,當jQuery翻修其''ajax'命名空間時)。 – pixelbobby 2011-05-18 16:23:11