jquery在响应和错误的文档时

时间:2013-06-19 02:08:56

标签: javascript jquery

有什么地方我可以在功能时找到有关jquery的更多信息吗?基本上,我所做的是 (伪代码)

$.when(ajaxCall1, ajaxCall2)).done(function(data1, data2) {
console.log(data1);
console.log(data2);
// do something real with the data
});

所以我没有得到的是,在我的ajaxCall1中,当它是一个独立的函数而不是在jquery的时候()时,我常常做类似的事情:

    $.ajax({
        url: '/api/platform/' + platform,
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            console.log("Got data");
            self.platforms = data;
            self.eventAggregator.trigger('getplatforms');  
        },
    });

因此该函数中的数据参数看起来与$ .when()返回的不同。它看起来像$ .when通过记录它返回一个数组。所以我一味地去了

self.platforms = data[0];

那么在某个地方有更多关于这个主题的文档吗?盲目地获取数组的第一个参数而不知道它是什么感觉我感觉不舒服,如果调用中出现错误,我不知道该怎么办。

我的ajaxCall1方法基本上只返回$ .ajax调用。

ajaxCall1() {
return $.ajax....
}

2 个答案:

答案 0 :(得分:1)

你是对的,documentation并不清楚。它说(强调我的):

  

在将多个Deferred对象传递给jQuery.when的情况下,该方法从新的“master”Deferred对象返回Promise,该对象跟踪它已传递的所有Deferred的聚合状态。一旦所有延期解决方案解决,该方法将解决其主延期,或者在其中一个延期被拒绝后立即拒绝主延期。如果解析了主Deferred,则传递传递给jQuery的所有Deferred的已解析值。例如,当Deferreds是jQuery.ajax()请求时,参数将是请求的jqXHR对象,按参数列表中给出的顺序

the arguments will be the jqXHR objects是错误的。 done方法实际上是为每个请求传递包含data, status, jqXHR的数组。

答案 1 :(得分:1)

$。根据传入的承诺对象的数量,两个完全不同的东西。

如果您只传入一个promise对象,它将与您习惯的成功回调完全相同。

否则,如果传入2个或更多个promise对象,则每个参数都将是一个数组,其中包含通常传递给成功回调的三个参数。要获得您习惯的内容,请访问所述数组中的第一项。

console.log(data1[0])
console.log(data2[0])

注意,这假设promise对象是jQXHR对象。否则,数组将包含传递给延迟对象的resolve方法的参数。

http://jsfiddle.net/LSpcK/