angular - 为从组件订阅方法设置的时间间隔未触发
问题描述
我正在 angular8 客户端应用程序中实现一个功能,该功能每 10 秒检查一次 .net 核心 API 是否可用。我基本上设置了一个 10 秒的计时器,它将 ping 服务中检查可用性的方法。此逻辑在 Offline 组件中创建。出于某种原因,在我停止服务之前,我看不到轮询发生。你能让我知道我哪里出错了吗?
Offline 组件在 App.Module 的声明部分中声明
连接服务
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ConfigurationService } from "./configuration.service";
@Injectable()
export class ConnectionService {
constructor(private httpClient: HttpClient, private configurationService: ConfigurationService) { }
checkIfCoreApiIsAvailable() {
var pingUrl = this.configurationService.baseUrl + "/api/online";
return this.httpClient.get(pingUrl, { observe: 'response' });
}
}
离线组件
@Component({
selector: 'not-found',
templateUrl: './offline.component.html',
styleUrls: ['./offline.component.css'],
animations: [fadeInOut]
})
export class OfflineComponent implements OnInit {
subscription: Subscription;
pingInterval: number;
constructor(private connectionService: ConnectionService) {
// Check if Core-API service is Online or Offline
//this.pingInterval = environment.corePingIntervalSeconds;
const source = timer(0, environment.corePingIntervalSeconds * 1000);
source.subscribe(() => {
this.connectionService
.checkIfCoreApiIsAvailable()
.pipe(first())
.subscribe(resp => {
if (resp.status === 200 ) {
console.log(true)
} else {
console.log(false)
}
}, err => console.log(err));
});
}
ngOnInit() {
}
ngOnDestroy() {
if(this.subscription) {
this.subscription.unsubscribe();
}
}
}
解决方案
由于您不加载 OfflineComponent 您应该考虑在您可以在根目录中提供的服务中使用此逻辑
推荐阅读
- android - 如何在 React Native 应用程序中保护捕获或下载的媒体文件
- docker - 激活器清理编译阶段未在 docker 中完成
- python - AWS Lambda:使用容器映像但仍然找不到程序路径
- javascript - 带有内联芯片和文本的自定义输入元素
- python - 为什么我的 Discord 机器人一直收到“错误 1:无效的 appid”,用于回答来自 wolfram alpha 的查询?
- file-upload - 无法发布带有已上传到 Linkedin 的图片的文章
- ruby-on-rails - NoMethodError(nil:NilClass 的未定义方法“上传”):
- ruby-on-rails - 我可以模拟通常在 docker 上运行的数据库调用吗
- python - 通过迭代列表(Python)替换(部分)字符串的问题
- ibm-cloud - 与 Tekton 缺少管道事件消息的 Slack 集成