¿Cómo usar debounceTime pero aún activar la función después de cierto tiempo?

TLDR; Me gustaría usar debounceTime para ejecutar la función solo si han pasado 300 milisegundos sin que se llame. Mientras tanto, también quiero poder activar la función cada 1 minuto si el proceso lleva mucho tiempo. De lo contrario, la función solo se activará al final del proceso.

Básicamente, nuestro sistema tiene un proceso largo que disparará muchas actualizaciones de SignalR al cliente. Cuando recibí el comando del servidor en el cliente, haré 2 solicitudes HTTP adicionales de vuelta al servidor para obtener información. Para que vuelva a golpear el servidor siempre que el servidor me envíe la actualización.

estoy usandodebounceTime para evitar enviar demasiadas solicitudes al servidor si el tiempo entre dos comandos está dentro de los 300 ms. Pero hay un caso de uso en el que el servidor envía constantemente la actualización al cliente en, por ejemplo, 1 hora. Lo que significa que el cliente activará getItemCount a 1h y 300ms.

export class LeftNavigationComponent implements OnInit, OnDestroy {
    typeACount: number = 0;
    typeBCount: number = 0;    

    constructor(
        private itemService: service.ItemService,        
        private signalR: service.SignalRService) { }

    ngOnInit(): void {
        this.subscriptions = [            
            this.signalR.itemCreated.debounceTime(300).subscribe(item => this.onUpdatingData())]
    }

    onUpdatingData() {
        Promise.all([
            this.itemService.getItemCount(APP_SETTING.TYPE_A),
            this.itemService.getItemCount(APP_SETTING.TYPE_B)])
            .then(response => this.gettingCountDone(response))
    }

    gettingCountDone(response) {
        this.typeACount = <any>response[0];
        this.typeBCount = <any>response[1];        
    }
}

Todavia quierodebounceTime para evitar enviar demasiadas solicitudes al servidor. Pero debe ser lo suficientemente inteligente como para activarse automáticamente, por ejemplo, 1 minuto después de recibir la primera actualización. ¿Alguien ha tenido el caso de uso antes?

Respuestas a la pregunta(4)

Su respuesta a la pregunta