javascript – 在js中同步管理缓存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在js中同步管理缓存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1373字,纯文字阅读大概需要2分钟。
内容图文
我在全局缓存变量中使用jquery在JavaScript中维护缓存.
每当使用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是异步的意思是它不能等待一个值(因此无法返回它).
强烈建议不要在同步模式下使用$.ajax(浏览器挂起且不支持JSONP),http://api.jquery.com/jQuery.ajax/
使用这个,http://www.techfounder.net/2008/05/17/simple-javascript-cache/,方法需要回调.但是,不希望为每次使用创建回调.
有没有一种很好的方法在js和ajax中实现“按需缓存”功能而没有为每次使用提供专用的回调?
解决方法:
你需要进行回调,因为AJAX是……等待它……“A”同步.
只需向查询缓存的函数添加回调即可.这很简单:
function getName(username, callback){
if(cache[username]){
// cache hit, immediately invoke the callback
callback(cache[username]);
}else{
// assumes this query function updates the cache and invokes the
// 2nd parameter when it completes
queryUsernameFromServer(username, function(){
// invoke the callback now
callback(cache[username]);
});
}
}
只需在代码中转换为异步样式:
之前:
var name = getName('jvenema');
后:
getName('jvenema', function(name){
});
内容总结
以上是互联网集市为您收集整理的javascript – 在js中同步管理缓存全部内容,希望文章能够帮你解决javascript – 在js中同步管理缓存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。