javascript - Angular 2 中 jQuery ajaxStart 的等效项

标签 javascript ajax angular

我想知道 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/

相关文章:

javascript - 加载 php 文件 + 获取变量 + ajax 重新加载

javascript - Backbone : Json load via Ajax vs. 引导

angular - Observable 查找嵌套属性

angular - 以 Angular 6 形式初始化 Square iframe 的问题

javascript - 对象之间的循环引用是一种不好的做法吗?

javascript - tablesorter 有 onsort 事件吗?

jquery - 在新选项卡中打开 ajax 链接

Angular 4 - *ngComponentOutlet 需要澄清

javascript - 在头部插入 th

JavaScript 编码风格