首页 > 解决方案 > 为从组件订阅方法设置的时间间隔未触发

问题描述

我正在 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();
        }
     }
}

标签: angular

解决方案


由于您不加载 OfflineComponent 您应该考虑在您可以在根目录中提供的服务中使用此逻辑


推荐阅读