Я недостаточно знаком с вызовами AJAX, чтобы знать, как это работает или не работает.Если у меня есть массив A и я использую A.filter()
, как будут работать вызовы AJAX в фильтре?Я полагаю, что массив используется для заполнения шаблона, все синхронно.
// Event calls function to filter list on page.
// Function calls filterArray(arrayList, objFilters)
async_fetch: function(string)
{
// Utilizes $.ajax() to retrieve a JSON array
var deferred = $.Deferred();
$.ajax({
url: ...,
dataType: "json",
success: function(data) {
var response = data;
deferred.resolve(data);
},
error: function(data)
{
//...
deferred.reject(msg);
}
});
return deferred;
};
filterArray: function(list, filters)
{
var filteredList = list.filter(function(item) {
for(var key in filters) {
// Actions for each of multiple filters to compare against...
else if(key == 'FILTER_X') {
var data = async_fetch(item.name);
// Use data to arrive at a determination, where true means I don't want to include this item in the filtered list
if(determination)
return false;
}
}
};
return filteredList;
};
// Results of filterArray() are passed along to a template within Backbone
// to redraw a segment of HTML on the page.
Будет ли вызов фильтра только синхронно ждать завершения вызова AJAX?Будет ли список фильтроваться иначе и возвращаться, и вызов AJAX должен подключиться к отфильтрованному списку и по существу завершить фильтрацию позже?Должен ли я просто создать версию async_fetch()
, которая не является асинхронной?