加载栏 http 请求与间隔
Loading bar http request with interval
我正在尝试钩接到流 a) 在请求执行之前和 b) 在收到请求之后(例如显示/隐藏加载栏)。在不使用间隔的情况下,我可以将布尔值 isLoaded 设置为 false 并在订阅函数中将其设置为 true。
但是我如何使用间隔来做到这一点呢?
Observable.interval(5000).
timeout(3500, new Error('Server not available.')).
flatMap(() => this._http.get('http://api.dev/get/events')).
map(res => (<Response>res).json())
.subscribe(data => this.events = data,
error => console.debug('ERROR', error),
() => console.log('END')
);
我是否必须将角度 http.get 方法包装在我自己的可观察量中?或者有没有更好/"更有棱角"的方法?
我建议不要使用间隔,因为网络请求可能会延迟并且花费更长/更短的时间,然后间隔会/可能使其不一致。不过,这样做的方法是...
// the import needed is
import { interval } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
private intervalSub: Subscription;
private ngUnsubscribe = new Subject();
somefunction (){
// Interval_Time was 5000
this.intervalSub = interval(Interval_Time)
.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
// call your api and do the request every Interval time
}
}
// make sure you have
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
您需要 ngUnsubscription 主题的原因是,如果您路由离开组件,那么它将不会继续轮询。
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- Angularjs http.get() Cross-Origin 请求被阻止
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 通过sdk/system/events在修改请求观测器上测试http
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 当我在chrome中切换设备模式时,$http.get请求失败
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- 使用angular js通过代理服务器请求Http
- 如何从HTTPS服务器请求HTTP服务器的javascript文件
- 阻止的跨来源请求:http://api.fixer.io/latest.
- 坏的请求.HTTP POST到api
- 有没有办法为AngularJS JSON请求($http/$resource)使用浏览器缓存?
- angular js在每个http请求$http上添加请求参数
- 当从不存在的站点请求HTTP响应时,Node.js脚本会中断
- 通过代理服务器请求HTTP呼叫