【发布时间】:2015-08-07 01:34:09
【问题描述】:
为什么jQuery的deferred.when在done回调中返回promise,而不是它们对应的响应数据?
var data = {
json: JSON.stringify({
text: 'some text',
array: [1, 2, 'three'],
object: {
par1: 'another text',
par2: [3, 2, 'one'],
par3: {}
}
}),
delay: 3
};
var firstRequest = $.ajax({
url:'/echo/json/',
data: data,
type: 'POST'
});
var secondRequest = $.ajax({
url:'/echo/json/',
data: data,
type: 'POST'
});
$.when.apply($, [firstRequest, secondRequest]).done(function(data1, data2){
console.log(data1); // returns array, I expect a response object
console.log(data2);
});
documentation 和 SO 上的各种答案(如 this)都暗示我应该获取实际的响应对象,而不是带有 [responseobject, textstatus, jqxhr] 的数组。
【问题讨论】:
-
呃,再读一遍jQuery docs。
$.ajax调用的示例明确说明“每个参数都是具有以下结构的数组:[data, statusText, jqXHR]” -
@Bergi Wops,有时候你需要两双眼睛......
标签: javascript jquery ajax promise