某种形式的记忆化的。 注意:您将不得不更改以下代码以适应您的XHR实现。 由于您没有提供任何代码,因此必须作出假设。
var cacheXHRWrapper = function (url , handler) {
var cache = {};
var queued = {};
var pending = {};
if (cache[ url ]) {
handler(cache[ url ]);
} else {
queued[ url ] || (queued[ url ] = []); // I know, call me lazy.
queued[ url ].push(handler);
if (!pending[ url ]) {
// might want to adjust this to comply to your XHR implementation
XHR_IMPL.request(url , function (response) {
// cache response
cache[ url ] = response;
// serve all queued handlers.
var fn = queued[ url ].shift();
while (fn) {
fn(response);
fn = queued[ url ].shift();
}
});
pending[ url ] = true;
}
}
}
奖金,队列请求处理程序(通过url)已经运行。