From 9f3b9a212743b7060a5cc67f8829477cbf273119 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Thu, 6 Sep 2012 01:22:29 +0200 Subject: [PATCH] Use a closure with a private variable for $.cache's requests. --- 4chan_x.user.js | 61 ++++++++++++++++++++++++++----------------------- script.coffee | 34 ++++++++++++++------------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index 7ab665616..26b2d1813 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -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); diff --git a/script.coffee b/script.coffee index 5a4c7b335..a1410fa38 100644 --- a/script.coffee +++ b/script.coffee @@ -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