我想知道 Angular 2 中是否有与 ajaxStart 或 ajaxStop 等效的函数。
我想检查文档中是否有ajax。
根据official documentation 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");
}
}
...
进入 get 请求,我这样做(在成功回调之前):
checkForAjax.setXhr()
在获取请求的回调中,我只是删除状态。
checkForAjax.removeXhr()
顺便说一句,我的ajax成功后,我没有xhr
状态。因此,如果我将其 checkin 我的 app.component.ts
中,我只需测试我的 localStorage
中是否有属性 xhr
。
我现在工作,但我想要另一种方式来用 Angular 2 监听 ajax。
这种方式存在吗? 怎样才能做到呢?
最佳答案
你可以利用 Promise
https://stackoverflow.com/a/30008115/3152269解释得比我更好,但这似乎很适合你
当我发出 ajax 请求时,我通常做的是 promise 在收到响应后运行一些代码。
这使得 Ajax 调用更易于阅读,并确保代码不会运行,除非您希望它运行。
关于javascript - Angular 2 中 jQuery ajaxStart 的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40124984/