我想知道Angular 2中是否有等效的ajaxStart或ajaxStop。
我想检查一下是否有ajax进入文档。
根据ajaxStart的 official documentation ,当有任何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");
}
}
...
进入get请求,我这样做(成功回调之前):
checkForAjax.setXhr()
在get请求的回调中,我只是删除了状态。
checkForAjax.removeXhr()
顺便说一句,在我的ajax成功之后,我还没有xhr
状态。因此,如果我将其检入我的app.component.ts
,我只是测试我的xhr
中是否有属性localStorage
。
我现在正在工作,但我想用另一种方法来监听角度为2的ajax。
这种方式存在吗? 怎么办呢?
答案 0 :(得分:1)
你可以使用Promises
https://stackoverflow.com/a/30008115/3152269比我更好地解释了它,但它似乎正好在你的小巷里
我在拍摄ajax请求时通常会做的是承诺在收到回复后运行一些代码。
这使得Ajax调用更容易阅读,并确保代码不会运行,除非您需要它。