Use a closure with a private variable for $.cache's requests.

This commit is contained in:
Nicolas Stepien 2012-09-06 01:22:29 +02:00
parent 606875c292
commit 9f3b9a2127
2 changed files with 50 additions and 45 deletions

View File

@ -369,37 +369,40 @@
r.send(form);
return r;
},
cache: function(url, cb) {
var req, reqs, _base;
reqs = (_base = $.cache).requests || (_base.requests = {});
if (req = reqs[url]) {
if (req.readyState === 4) {
cb.call(req);
} else {
req.callbacks.push(cb);
}
return;
}
req = $.ajax(url, {
onload: function() {
var _i, _len, _ref;
_ref = this.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cb = _ref[_i];
cb.call(this);
cache: (function() {
var reqs;
reqs = {};
return function(url, cb) {
var req;
if (req = reqs[url]) {
if (req.readyState === 4) {
cb.call(req);
} else {
req.callbacks.push(cb);
}
return delete this.callbacks;
},
onabort: function() {
return delete reqs[url];
},
onerror: function() {
return delete reqs[url];
return;
}
});
req.callbacks = [cb];
return reqs[url] = req;
},
req = $.ajax(url, {
onload: function() {
var _i, _len, _ref;
_ref = this.callbacks;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cb = _ref[_i];
cb.call(this);
}
return delete this.callbacks;
},
onabort: function() {
return delete reqs[url];
},
onerror: function() {
return delete reqs[url];
}
});
req.callbacks = [cb];
return reqs[url] = req;
};
})(),
cb: {
checked: function() {
$.set(this.name, this.checked);

View File

@ -295,22 +295,24 @@ $.extend $,
$.extend r.upload, upCallbacks
r.send form
r
cache: (url, cb) ->
reqs = $.cache.requests or= {}
if req = reqs[url]
if req.readyState is 4
cb.call req
else
req.callbacks.push cb
return
req = $.ajax url,
onload: ->
cb.call @ for cb in @callbacks
delete @callbacks
onabort: -> delete reqs[url]
onerror: -> delete reqs[url]
req.callbacks = [cb]
reqs[url] = req
cache: (->
reqs = {}
(url, cb) ->
if req = reqs[url]
if req.readyState is 4
cb.call req
else
req.callbacks.push cb
return
req = $.ajax url,
onload: ->
cb.call @ for cb in @callbacks
delete @callbacks
onabort: -> delete reqs[url]
onerror: -> delete reqs[url]
req.callbacks = [cb]
reqs[url] = req
)()
cb:
checked: ->
$.set @name, @checked