使用延迟对象获取异步请求的请求参数
Getting Request Parameter for Asynchronous Requests with Deferred Objects
我正在发送异步 HTTP 请求并收集结果。在知道我要寻找什么之后,这缝起来有点容易。
现在我遇到了问题,我必须将请求的结果与请求的某些部分相关联,我需要在 $.when
-回调中,我该怎么做?
var requests = [];
for (var i in uris) {
requests.push($.get(endpoint, {graph: uri}));
}
$.when.apply($, requests).done(function () {
var result = "";
for (i in arguments) {
result += therequesturi: + ": (" + arguments[i][0] + ")";
}
});
therequesturi
应该是 uri 的占位符,我用它来检索数据。
如果我理解你的问题,你可能需要这样的东西:
var requests = [];
var results = [];
$.each(uris, function(index, uri) {
requests.push($.get(endpoint, {graph: uri}).success(function (response) {
results[index] = response;
}));
});
$.when.apply($, requests).done(function () {
var result = '';
$.each(results, function(index, r) {
result += therequesturi + ': (' + r[0] + ')';
}
});
uris
数组、requests
数组和done回调的arguments
都保证是一致的。
因此您可以简单地索引到原始 uris
数组。
这是我的做法:
var requests = uris.map(function(uri) {
return $.get(endpoint, {graph: uri});
});
$.when.apply($, requests).done(function() {
var args = Array.prototype.slice.call(arguments);//convert arguments object to proper array.
var result = args.map(function(res, i) {
return uris[i] + ": (" + res[0] + ")"; // because of congruity, indexes correspond with each other.
}).join('');
});
我正在发送异步 HTTP 请求并收集结果。在知道我要寻找什么之后,这缝起来有点容易。
现在我遇到了问题,我必须将请求的结果与请求的某些部分相关联,我需要在 $.when
-回调中,我该怎么做?
var requests = [];
for (var i in uris) {
requests.push($.get(endpoint, {graph: uri}));
}
$.when.apply($, requests).done(function () {
var result = "";
for (i in arguments) {
result += therequesturi: + ": (" + arguments[i][0] + ")";
}
});
therequesturi
应该是 uri 的占位符,我用它来检索数据。
如果我理解你的问题,你可能需要这样的东西:
var requests = [];
var results = [];
$.each(uris, function(index, uri) {
requests.push($.get(endpoint, {graph: uri}).success(function (response) {
results[index] = response;
}));
});
$.when.apply($, requests).done(function () {
var result = '';
$.each(results, function(index, r) {
result += therequesturi + ': (' + r[0] + ')';
}
});
uris
数组、requests
数组和done回调的arguments
都保证是一致的。
因此您可以简单地索引到原始 uris
数组。
这是我的做法:
var requests = uris.map(function(uri) {
return $.get(endpoint, {graph: uri});
});
$.when.apply($, requests).done(function() {
var args = Array.prototype.slice.call(arguments);//convert arguments object to proper array.
var result = args.map(function(res, i) {
return uris[i] + ": (" + res[0] + ")"; // because of congruity, indexes correspond with each other.
}).join('');
});