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

标签 javascript jquery ajax promise

为什么 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/

相关文章:

javascript - 在 jquery 中添加和删除类

javascript - 将 jQuery 插件变成指令

javascript - jQuery - 如何在引号中包围 Ajax 加载的元素?

javascript - 在搜索文本框中输入日期值时如何避免 ajax 错误?

javascript - 如何访问javascript函数中的java变量

javascript - AmCharts 股票图表多个数据集日期范围不正确

JavaScript 重定向循环

javascript - 获取单选按钮列表中选中的单选按钮的值

javascript - 根据用户输入生成文件后下载文件

ruby-on-rails - Rails 3 + Ajax : how to access my local form builder instance