使用deferred.done()延迟时的不同对象?

时间:2013-11-07 16:24:55

标签: jquery

同步ajax请求时,例如:

$.when(
    $.get("/api/foo", { prm: 1 }),
    $.get("/api/bar", { prm: 2 })
).done(function (data1, data2) {
    doStuff(data1[0].Value, data2[0].Value);
});

我从延迟的$ .get调用中获取结果对象,这与我在调用$ .get时获得的结果不同。

$.get("/api/foo", { prm: 1 }, function (data) { doStuff(data.Value); });

基本上我需要的信息是传递给done()的对象的索引0(索引1处有“成功”字符串,索引2处有原始数据)。

我想知道结果对象何时以及如何以这种方式被更改,以及是否可以安全地始终注意索引0处的数据。

1 个答案:

答案 0 :(得分:1)

依靠数据[0]是完全安全的,因为这是工作时的方式。 您的单一来电应如下所示:

$.get("/api/foo", { prm: 1 }, function (data, statusText, jqXHR) { doStuff(data.Value); });

但是你选择省略其他参数,这没关系。 现在更容易理解为什么使用jQuery。当强制你访问数据[0] ...因为data [0]是get结果的第一个参数,data [1]是状态文本,data [2]是jqXHR。