【发布时间】:2014-09-16 15:58:05
【问题描述】:
我有这个代码:
var data = {};
var dataPending = {};
function getData(name, callback) {
callback = callback || function() {};
// new response
if (!data[name] && !dataPending[name]) {
dataPending[name] = true;
sendGetRequest({
url : '/blah-blah/' + name,
callback : function(response) {
data[name] = response;
delete dataPending[name];
return callback();
}
});
// equivalent request in progress
} else if (dataPending[name]) {
// TODO how to wait for equivalent request is completed and return callback?
// data is exists
} else {
return callback();
}
}
getData('name1', function() { ... });
getData('name1', function() { ... });
getData('name2', function() { ... });
getData('name2', function() { ... });
getData('name1', function() { ... });
函数 sendGetRequest 是 xmlhttprequest 的封装。有用。但... 如何等待等价请求完成并返回回调?
【问题讨论】:
-
我想你可能正在寻找承诺:api.jquery.com/promise
-
@Gerard Downes 没有 jquery
标签: javascript xmlhttprequest queue