在打字稿中的Web服务调用之间添加延迟

问题描述

我正在开发一个简单的Web应用程序,该应用程序将大文件发送到服务器进行处理。处理可能会花费超过我无法调整的服务器超时的相当长的时间,因此我决定设计两种服务-一种将数据发送到服务器,另一种不断检查处理结果。但似乎不断检查会占用太多资源,并且浏览器开始变慢。这是代码:

      try {
        this.processService.processData(this.byteArray); //data sent for a processing

        const processingResult: ProcessResult = new ProcessResult();
        processingResult.traces = []

        do {
          this.processService.getResult().then(result => processingResult.traces = result?.traces);
        } while (processingResult.traces.length === 0);

        this.traces = processingResult.traces;
      } catch (error) {
        console.error(error);
      }
    }
  }

在TypeScript中的ws调用之间添加某种延迟的最佳实践是什么?谢谢。

解决方法

delay(ms: number) {
    return new Promise(resolve => setTimeout(resolve,ms));
}

使用上述方法作为异步函数调用

async searchSomething() {
    // webservice call 1
    await this.delay(1000);
    // webservice call 1 
}
,

我建议将resource "google_monitoring_metric_descriptor" "p95_latency" { description = "" display_name = "" type = "custom.googleapis.com/http/server/requests/p95" metric_kind = "GAUGE" value_type = "DOUBLE" labels { key = "status" } labels { key = "uri" } labels { key = "exception" } labels { key = "method" } labels { key = "outcome" } } intervalskipWhile结合使用。

take

请参见工作中的Stackblitz:https://stackblitz.com/edit/rxjs-fqbwon?file=index.ts

编辑:您可以将// SERVER let ready = false; function veryLongServerRequest(): void { timer(10000).subscribe( () => ready = true,); } function isServerReady(): Observable<boolean> { return of(ready); } // CLIENT veryLongServerRequest(); interval(500).pipe( tap(i => console.log('Polling try ' + i)),switchMap(() => isServerReady()),skipWhile(b => !b),take(1),).subscribe(() => console.log('FINISHED!')); + skipWhile简化为take

请参见工作中的Stackblitz:https://stackblitz.com/edit/rxjs-tc2ztd?file=index.ts

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...