Я использую JQuery для объединения вызовов ajax в среде WordPress, чтобы поразить сторонний API.
Рабочий процесс таков, что сначала я получаю массив объектов, каждый из которых имеет start_date
и * 1004.*.Затем мне нужно сделать ajax-вызовы с использованием этих параметров и связать ответ с исходными параметрами.Мне также нужно выполнять запросы ajax один за другим, потому что не критично, что все они загружаются сразу, и я хочу контролировать сетевые запросы (на странице загружается много других ресурсов).
В любом случае, вот мой код:
var superobjects; //variable to hold final result - want the response and the original date params in this array of objects
var callback = function(result) {
superobjects.push(result); //callback of ajax request using jQuery.when
};
var requests = []; // array to hold requests before doing them one at a time with jQuery.when
for (i = 0; i < data.length; i++) {
requests.push(jQuery.ajax({
url: wpApiSettings.root + 'superplugin/v1/superdooperendpoint/' + api_key + "/" + data[i].start_date + "/" + data[i].end_date,
method: 'GET',
beforeSend: function(xhr) {
// Set nonce here
xhr.setRequestHeader('X-WP-Nonce', wpApiSettings.nonce);
},
done: function(data) {
console.log({
start_date: data[i].start_date,
end_date: data[i].end_date
});
//this console.log above never fires
}
}));
}
setTimeout(function() {
console.log(superobjects) //no request information here!
}, 2222);
jQuery.when.apply(undefined, requests).then(function(result) {
callback(result) //run the ajax sequentially and then do the callback - problem is I've lost the request params here!
});
Как вы можете сказать, когда я делаю superobjects
в журнале, он не имеет никакой информации от start_date
или end_date
Я использовал для создания запроса, просто результат вызова ajax.Есть ли способ сохранить этот последовательный рабочий процесс AJAX и получить параметры запроса в моем окончательном superobject
?Я предполагаю, что это с умным использованием функций и областей, но я не вижу этого прямо сейчас, поэтому ищу помощь!:)