gpt4 book ai didi

javascript - 为什么 deferred.when() 在完成回调中返回 promise ?

转载 作者:行者123 更新时间:2023-11-29 10:12:36 25 4
gpt4 key购买 nike

为什么 jQuery 的 deferred.whendone 回调中返回 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] 的数组。

http://jsfiddle.net/2h48mr78/

最佳答案

您得到了正确的结构,但是 data1data2 参数并不是实际数据本身。它实际上是一个包含三个项目的数组,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com