[英]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调用,因此,如果我使用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.