如何从后端通过HTTP流异步发送数据?

问题描述 投票:0回答:1

我最近正在学习rxjs。我试图通过http流获取数据(异步地,在收到单个响应后不关闭流。我希望随着时间的推移从单个http请求获得多个响应)。所以rxjs的UI代码将是这样,

this.http.get('https://...').subscribe(value => {
     ...
    });

但是我不知道如何通过后端的http响应异步发送数据。 http响应等待整个json完成,最终以单个响应发送整个数据。我不要如何对后端进行编码以尽快发送json数据,而不是等待获取所有数据并以[{..},{..},{..} ....]发送?

javascript node.js angular rxjs
1个回答
0
投票
interface Response { payload: Payload, complete: boolean }

然后,您的服务可以向服务器发送请求,并在其中包含一些数据并立即将其设置为false时立即发送响应,您的服务将一直池化服务器,直到服务器以完全为true进行响应为止。

 

const { of } = rxjs; const { switchMap, map } = rxjs.operators; let i = 0; const http = url => of({ payload: [i++], complete: i === 5 ? true : false }); const poll = () => http('url').pipe( switchMap(response => response.complete ? of(response) : poll().pipe( map(res => ({ payload: [...response.payload, ...res.payload], complete: res.complete })) )) ); poll().subscribe(response => { console.log(response); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.