2015-10-19 2 views
0

Моя команда в настоящее время пытается избавиться от нашего jQuery. Нам удалось избавиться от всех наших селекторов, и они реорганизуют его из наших вызовов ajax, но мы пытаемся воссоздать функции ajaxStart и ajaxStop.SuperAgent эквивалент ajaxStart JQuery ajaxStop

Я просматривал документы SuperAgent, и я не могу найти ничего подобного. Кто-нибудь знает что-то подобное в SuperAgent или знает, как воссоздать это с помощью прослушивателей событий или что-то еще?

Моя альтернатива заключается в том, чтобы добавлять изменения дисплея непосредственно к каждому запросу, что составляет 200 строк, которые я бы хотел избежать.

window.onload = function() { 
    $(document) 
    .ajaxStart(function(){ 
    document.getElementById('ajaxSpinner').style.display = 'block'; 
    }) 
    .ajaxStop(function(){ 
    document.getElementById('ajaxSpinner').style.display = 'none'; 
    }); 
} 

Редактировать: Мы выяснили, как использовать принятый ответ в нашей базе кода. Мы переместили код в выбранном ответе в его собственный модуль, который нам нужен везде, где мы используем SuperAgent. По каждому из наших вызовов мы теперь включаем .use (Module.stats). Пока это решение работает, однако мы еще не начали тестирование с помощью браузера. Спасибо за помощь!

Edit2: Occassion потребовал от нас перестроить приложение. Принятый ответ не работает с самой последней версией SuperAgent, нам пришлось отбросить его обратно до версии 1.7.2.

ответ

2

https://github.com/visionmedia/superagent/issues/861#issuecomment-173413292

надеюсь, что выше ссылка полезно

цитата код:

function stats(req) { 
    req.once('request', function() { 
     // ajaxstart 
     req._startedAt = Date.now(); 
    }); 
    req.once('error', function() { 
     // an error,the request fail 
    }); 
    req.once('end', function() { 
     // ajaxstop 
     var use = Date.now() - req._startedAt; 
    }); 
} 

function get(url) { 
    return request.get(url) 
     .use(stats); 
} 

Request.prototype._end = Request.prototype.end; 
Request.prototype.end = function(fn) { 
    this.emit('request'); 
    this._end(fn); 
} 
+0

@Littlee: Так что ответ также должен быть удален, если ОП этого ответа не редактировал его, как вы делали. Однако теперь ваш код является ** кодом только ** ответ. Это ответ, но не очень полезный. Пожалуйста, объясните *** Как ** работает ваш код. * И *** Почему ** вы это делаете. * –

Смежные вопросы