为什么 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]
的数组。
最佳答案
您得到了正确的结构,但是 data1
和 data2
参数并不是实际数据本身。它实际上是一个包含三个项目的数组,data、statusText、jqXHR
所以您的数据实际上在 data1[0]
中,它将注销:
Object {text: "some text", array: Array[3], object: Object}
文档有点不清楚,但在示例部分展示了它是如何工作的。
关于javascript - 为什么 deferred.when() 在完成回调中返回 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30440557/