У меня есть несколько пользовательских элементов управления, загружающихся асинхронно на моей странице с использованием методов страницы.Некоторые выпадающие списки вызывают асинхронные обратные вызовы этих пользовательских элементов управления, а пользовательские элементы управления перезагружаются с измененным содержимым.У нас были свои причины сделать это таким образом.
Однако в настоящее время нашим пользователям приходится ждать загрузки этих пользовательских элементов управления, прежде чем они смогут изменить свой выбор в выпадающих списках.В попытке улучшить взаимодействие с пользователем я пытаюсь прервать предыдущие, еще не загруженные запросы.
Я пытаюсь поддерживать глобальный массив js выдающихся исполнителей асинхронных запросов,чтобы гарантировать, что загружается только самый последний запрос для каждого пользовательского элемента управления.Другими словами, я хочу отменить предыдущие запросы на определенный пользовательский контроль, которые еще не загружены, и отдать приоритет последнему запросу на этот пользовательский контроль.
Проблема, с которой я столкнулся, заключается в том, что ко времени выполнения моей функции OnSuccessслучается, глобальный массив не определен.
Я поступаю неправильно?Что же я не знаю?
Любая помощь будет принята с благодарностью.
Это урезанный пример моего кода:
var outstanding_requests;
$.fn.remove_or_item = function (val, col) {
var arr1 = $(this);
var arr2 = new Array();
$.each(arr1, function (k, v) {
if (v[col] != val) { arr2.push(v); }
else if (v[1].get_started()) { v[1].abort(); }
});
return arr2;
}
$.fn.find_or_item = function (val, col) {
var item;
var arr1 = $(this);
$.each(arr1, function (k, v) {
if (v[col] == val) { item = v; return false; } return true;
});
return item;
}
function RunMyPageMethod(panelname) {
var request; //current request object
if (outstanding_requests == undefined) { outstanding_requests = new Array(); }
outstanding_requests = $(outstanding_requests).remove_or_item(panelname, 0);
request = PageMethods._staticInstance.LoadUserControl(panelname, PageMethodSuccess, PageMethodFailure);
outstanding_requests.push([panelname, request.get_executor()]);
}
function PageMethodSuccess(result, userContext, methodName) {
var panelname = result.split("|")[0];
//here outstanding_requests is undefined
if($(outstanding_requests).find_or_item(panelname,0))
{
outstanding_requests = $(outstanding_requests).remove_or_item(panelname, 0);
//load usercontrol
}
}