0

同步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 处的数据是否安全。

4

1 回答 1

1

依靠 data[0] 是完全安全的,因为这就是 when 的工作方式。您的单个 get 调用应如下所示:

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

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

于 2013-11-07T16:34:55.003 回答