【发布时间】:2018-06-04 07:52:54
【问题描述】:
祝你的朋友圣诞快乐。
我的 Angular 4 应用程序不会等待。
我想在调用 API 之前放慢速度。
但我只是继续碰壁。
我在我的代码中使用了 HttpInterceptor。
但是这些 Observable 只会爆炸。
不要受到太多的蔑视。
下面你会发现我的尝试。
export class ApiUrlInterceptor implements HttpInterceptor {
constructor(private http: Http) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return Observable.create(observer => {
setTimeout(() => {
observer.next(true); //Not sure why I do this
const start = Date.now();
console.log(`Request for ${req.url}`);
return next.handle(req).do(event => {
if (event.type == HttpEventType.Response) {
const elapsed = Date.now() - start;
console.log(`Request for ${req.urlWithParams} took ${elapsed} ms.`);
}
});
}, 1000);
});
}
}
结果是调用了 API。
但没有安装调用者的结果
我的 Observable 似乎卡住了。
我的运气快没了。
我很清楚这是 Angular 中的一种反模式“不要等待随机数”,而是构建您的应用程序,这样您就不需要这样做。我的实际用例是在HttpInterceptor 我需要一些由其他 Observable 加载的东西,通常我没有问题,只有当用户刷新特定页面时,我才有可能没有加载这些东西。
我直接教授的“快速修复”是我做一个 if 如果没有加载我等待一些(“给它时间加载”)然后我继续,谁在乎!用户不会经常刷新那个特定的角度链接。我最终把所有东西都移到了config.ts 并使用APP_INITIALIZER。但是,如果我想等待,我仍然想知道如何等待一段时间,因此这个最小的例子。
【问题讨论】:
-
我正要编辑你的问题,但后来我注意到这是一首歌曲
-
是的,只是一些乐趣,我很无聊,无论如何我希望如果我遗漏了一些信息,请告诉我
-
为什么要“放慢速度”?你想要实现什么(你的最终目标是什么)?
-
漂亮的节日问题格式
-
@Igor 这是一个最小化代码示例,最终目标是在调用 api 之前放慢速度,等待(我喜欢的时间)。
标签: angular rxjs wait angular-http-interceptors angular-httpclient