繁体   English   中英

等效于Angular 2中的jQuery ajaxStart

[英]Equivalent of jQuery ajaxStart in Angular 2

我想知道在Angular 2中是否有ajaxStart或ajaxStop的等效项。

我想检查文档中是否存在一个ajax。

根据ajaxStart的官方文档 ,当有任何Ajax请求时,它将被触发。 我想在Angular 2中使用类似的方法。

$( document ).ajaxStart(function() {
  $( "#loading" ).show();
});

我这样做:

  • 进入我的app.component.ts ,我展示了我的装载机
  • 当我的ajax成功时,我隐藏了加载程序

但是,我的某些页面没有ajax调用,因此,如果我使用app.component.ts显示加载程序,将无法隐藏它,因为此页面中没有ajax请求。

我认为,如果我侦听页面中是否没有ajax,则会隐藏我的加载程序。

我使用localStorage保存ajax的状态。 如果页面具有ajax,则将值设置为该xhr,否则,将删除存储在localStorage中的状态。 每次,用户进入页面。 我的脚本检查该页面是否有运行的ajax。

app.component.ts

if(localStorage.getITem("xhr")) {
    // action here
}

request.service.ts

...
let checkForAjax: any = {
    setXhr () {
        localStorage.setItem("xhr", "1");
    },
    removeXhr () {
        localStorage.removeItem("xhr");
    }
}
...

进入获取请求,我这样做(在成功回调之前):

checkForAjax.setXhr()

并进入get请求的回调中,我只是删除状态。

checkForAjax.removeXhr()

顺便说一句,在我的ajax成功之后,我还没有处于xhr状态。 因此,如果将其检入到app.component.ts ,那么我只会测试localStorage是否存在xhr属性。

我现在工作,但是我想用另一种方式来听角度为2的ajax。

那存在吗? 怎么办呢?

您可以利用承诺

https://stackoverflow.com/a/30008115/3152269比以往任何时候都可以更好地解释它,但它似乎在您的小巷中

当我提出ajax请求时,我通常会做一个承诺,即在收到响应后运行一些代码。

这使Ajax调用更易于阅读,并确保除非您希望执行,否则代码不会运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM