如何在javascript中获取所有挂起的http请求
How to get all the pending http requests in javascript?
有没有办法在javascript或angular2
获取待处理的 HTTP 请求列表?
目标是启动"其他几个过程"
根据此列表的波动。
是否存在可访问的请求堆栈之类的东西?
谢谢。
事实上,您可以扩展Http
类来拦截请求执行。
import {Injectable} from 'angular2/core';
import {Http,ConnectionBackend,RequestOptions,RequestOptionsArgs,Request} from 'angular2/http';
import 'rxjs/Rx';
import {MonitoringService} from './monitoring.service';
@Injectable()
export class CustomHttp extends Http {
constructor(backend: ConnectionBackend,
defaultOptions: RequestOptions,
private monitoring:MonitoringService) {
super(backend, defaultOptions);
}
request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
console.log('request...');
return super.request(url, options);
}
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
console.log('get...');
return super.get(url, options);
}
(...)
}
您可以利用 finally
运算符来拦截与 HTTP 请求对应的可观察量的完成。可以在调用之前递增属性,并在finally
运算符中递减属性。
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
this.monitoring.pendingRequestsNumber++;
return super.get(url, options).finally(() => {
this.monitoring.pendingRequestsNumber--;
});
}
这个CustomHttp
类可以像这样注册。我添加了一个监视服务来存储(和共享)待处理请求的数量:
import {bootstrap} from 'angular2/platform/browser';
import {provide} from 'angular2/core';
import {HTTP_PROVIDERS,Http,XHRBackend,RequestOptions} from 'angular2/http';
import {AppComponent} from './app.component';
import {CustomHttp} from './http.custom';
import {MonitoringService} from './monitoring.service';
bootstrap(AppComponent, [HTTP_PROVIDERS,
MonitoringService,
provide(Http, {
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, monitory:MonitoringService) => new CustomHttp(backend, defaultOptions, monitory),
deps: [XHRBackend, RequestOptions, MonitoringService]
})
]);
我创建了一个 plunkr 来描述实现这种方法的方法:https://plnkr.co/edit/qHNn5amI0byci9RMkZyE?p=preview。
如果你想这样做,你需要在后端。如果您的网站托管在php上,那么您不能在javascript中执行此操作。但是如果你使用node.js那么这当然是可能的,因为node.js在后端使用javascript。
相关文章:
- JavaScript执行暂时挂起页面
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 应用将图表转换为图像的jqplot代码时Chrome挂起
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- MongoDB collection.find()查询挂起
- 使用子字符串方法时应用程序挂起的原因
- 如何在AngularJS中取消挂起的请求
- 从node.js应用程序调用Mongoose Model.save()时挂起
- Chrome,Safari在从本地存储读取时挂起,而Firefox很好
- IE 10 挂起 XMLHttpRequest 6 分钟,然后响应请求(使用 AngularJS 实现 CRSF)
- 中止Angular中挂起的http请求未中止
- AngularJS后续$http删除将保持挂起状态几分钟
- 如何在javascript中获取所有挂起的http请求
- 在nodejs中挂起一段时间后的http连接
- $http post调用挂起
- Http-proxy一直挂起
- 类似的$http请求首先被挂起,然后在NodeJS服务器上失败
- AngularJS在路由更改时中止所有挂起的$http请求