From a7af355820a05bf8ff70b745dab28375d2febb73 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sat, 9 Mar 2019 00:47:16 -0800 Subject: [PATCH] Limit $.cache to subset of XMLHttpRequest API. --- src/platform/$.coffee | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/platform/$.coffee b/src/platform/$.coffee index 9b95c49ae..078248731 100644 --- a/src/platform/$.coffee +++ b/src/platform/$.coffee @@ -84,23 +84,21 @@ $.ajax = do -> do -> reqs = {} - $.cache = (url, cb, options) -> - if req = reqs[url] - if req.readyState is 4 - $.queueTask -> cb.call req, {isCached: true} - else + $.cache = (url, cb, options={}) -> + if (req = reqs[url]) + if req.callbacks req.callbacks.push cb + else + $.queueTask -> cb.call req, {isCached: true} return req - rm = -> delete reqs[url] - try - return if not (req = $.ajax url, options) - catch err - return - $.on req, 'load', -> - for cb in @callbacks - do (cb) => $.queueTask => cb.call @, {isCached: false} - delete @callbacks - $.on req, 'abort error', rm + options.onloadend = -> + if @status + for cb in @callbacks + do (cb) => $.queueTask => cb.call @, {isCached: false} + delete @callbacks + else + delete reqs[url] + req = $.ajax url, options req.callbacks = [cb] reqs[url] = req $.cleanCache = (testf) ->