首页 > 解决方案 > Angular 7:暂停正在进行的流式传输请求并在处理数据块时继续

问题描述

早上好,角宇宙的伟大绝地:)

我正在尝试使用 Angular 7 和 RxJS 6 来实现以下想法。我有一个 REST API 端点,它以块的形式流式传输数据。当我收到一大块数据时,我希望能够暂停请求(以便 Angular HttpClient 那时不会接收数据)。当我完成数据处理后,我想获得另一部分。该端点可能会流式传输大型数据块,我不想用这些来填充内存。相反,我想分块进行。

在我的想象中,虚拟代码将是这样的:

const req = new HttpRequest(
    'POST',
    'localhost:9000',
    {},
    {
        reportProgress: true,
        responseType: 'json'
     });

const source = http.request(req)

const pause = new BehaviourSubject(false);

source
    .pipe(pauseStream(pause))
    .getSearchProductsStream.subscribe(dataChunk => { 
        pause.next(true);
        doOperations(dataChunk)
        pause.next(false);
})

在 Angular(一些特定的 HttpClient 设置)或 RxJS(秘密运算符)中是否有类似的东西可以解决这个问题?

关于,Angular padawan。

标签: angularstreamrxjsangular7rxjs6

解决方案


推荐阅读