abort ajax querys

Здравствуйте.
Есть ли встроенная возможность отследить какие аякс-запросы активны в настоящий момент, и прервать выполнение конкретного запроса, или всех запросов?

Здравствуйте! Нет, такой функциональности нет.

Однако, любые Ajax запросы на странице можно отследить с помощью глобального события, onBeforeAjax и, при необходимости, создать массив всех запросов и следить за их состоянием, readyState.

var xhr = [];
webix.attachEvent("onBeforeAjax", function(mode, url, data, request,headers){
    xhr.push(request);
});

Другая возможность - это получение запроса с помощью метода getXHR(), если запрос отправлен через webix.ajax().

Ясно, спасибо.

Вернулся к этому вопросу и возник новый, а я как-то могу глобально же отслеживать завершение выполнения запроса? Причём вне зависимости - успешно или нет.
То есть сначала в массив сохранил запросы, а потом, по мере выполнения - чищу массив от выполненных запросов.

В коде, рядом с “onBeforeAjax” никаких событий не нашёл.

Дальше поискал, нашёл

      this.callEvent("onAfterLoad",[]);
      this.callEvent("onLoadError",arguments);
      webix.callEvent("onLoadError", [text, xml, xhttp, this]);

Но события на “this.”, я так понимаю, вызываются на конкретном вызове. А глобальное здесь только с ошибкой. И в любом случае, событие постобработки запроса - не содержит в себе идентификатора созданного объекта подключения, или его самого, так что без изменения всех вызовов AJAX в проекте, я в таком случае, не могу организовать глобальный учёт этих обращений.

Подскажите, пожалуйста, как это всё-таки реализовать. Сейчас у меня это на jQuery:

    $.xhrPool = [];

    $.xhrPool.abortAll = function xhrPool_abortAll()
    {
        $(this).each(function (i, jqXHR)
        {   //  cycle through list of recorded connection
            jqXHR.abort();  //  aborts connection
            $.xhrPool.splice(i, 1); //  removes from list by index
        });
    }

    $.ajaxSetup({
        beforeSend: function ajax_beforeSend(jqXHR, settings)
        {
            if ($.xhrPool.indicator == "") return;
            $("#" + $.xhrPool.indicator).show()
            $.xhrPool.push(jqXHR);
        }, //  annd connection to list
        complete: ajax_complete,
        error: ajax_complete
    });
    function ajax_complete(jqXHR)
    {
        if ($.xhrPool.indicator == "") return;

        var i = $.xhrPool.indexOf(jqXHR);   //  get index for current connection completed
        if (i > -1)
        {
            $.xhrPool.splice(i, 1);//  removes from list by index
        }

        if ($.xhrPool.length == 0)
        {
            $("#" + $.xhrPool.indicator).hide();
        }
    }



7ой параметр oBeforeAjax события - это промис серверного ответа

webix.attachEvent("onBeforeAjax", function(mode, url, params, xhr, 
                                             headers, file, promise){
    promise.then(function(){
          alert("all fine");
    }, function(){
          alert("something is wrong");
    });
});

Замечательно!
Спасибо. К сожалению в документации я про это не нашёл. И исходники мне тоже такую конструкцию не подсказали.

Буду использовать, спасибо!