Javascript 与Jquery'等价的超级代理;s AJAX启动AJAX停止

Javascript 与Jquery'等价的超级代理;s AJAX启动AJAX停止,javascript,jquery,superagent,Javascript,Jquery,Superagent,我的团队目前正试图摆脱jQuery。我们已经设法摆脱了所有选择器,并且正在从ajax调用中重构它,但是我们正在尝试重新创建ajaxStart和ajaxStop函数 我一直在查阅SuperAgent文档,但找不到任何与此等效的内容。是否有人知道SuperAgent中类似的内容,或者知道如何使用事件侦听器或其他方法重新创建此内容 我的选择是直接向每个请求添加显示更改,这是我希望避免的200行 window.onload = function() { $(document) .ajaxStar

我的团队目前正试图摆脱jQuery。我们已经设法摆脱了所有选择器,并且正在从ajax调用中重构它,但是我们正在尝试重新创建ajaxStart和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:Occasion要求我们重建应用程序。接受的答案不适用于最新版本的SuperAgent,我们必须将其回滚到1.7.2版。

希望上面的链接是有帮助的

报价代码:

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);
}

@Littlee:所以那个答案也应该被删除,除非那个答案的OP像你一样编辑它。但是,现在您的代码是一个代码唯一的答案。现在这是一个答案,但不是很有帮助。请解释你的代码是如何工作的。你为什么要这么做。