При синхронизации запросов 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); });
В основном, информация, которая мне нужна, - это индекс 0 объектов, переданных в done() (и есть строка "success" в индексе 1 и исходные данные по индексу 2).
Я хотел бы знать, когда и как объект результата изменяется таким образом, и если безопасно всегда следить за данными с индексом 0.
Совершенно безопасно полагаться на данные [0], так как это работает при работе. Ваш единственный звонок должен выглядеть следующим образом:
$.get("/api/foo", { prm: 1 }, function (data, statusText, jqXHR) { doStuff(data.Value); });
Но вы решили опустить другие параметры, что в порядке. Теперь проще понять, почему использование jQuery.when заставляет вас обращаться к данным [0]... потому что данные [0] - это первый параметр результата получения, данные [1] - это текст состояния, а данные [2] - jqXHR.
$.when
, это не будет массив, вам просто понадобитсяdata.Value
.