Angular 在上一次调用在中完成时发送最新的http请求
我正在努力实现以下目标: 我有一张申请表,上面有4个字段(a、B、C、D)用于更新票证。每当用户退出某个字段(在键入某个内容后),都应该向服务器发送一个更新该票证的请求。但是,想象一下以下场景:Angular 在上一次调用在中完成时发送最新的http请求,angular,http,throttling,buffering,Angular,Http,Throttling,Buffering,我正在努力实现以下目标: 我有一张申请表,上面有4个字段(a、B、C、D)用于更新票证。每当用户退出某个字段(在键入某个内容后),都应该向服务器发送一个更新该票证的请求。但是,想象一下以下场景: 用户更新字段A 将向服务器发送更新票证的请求 在A的更新调用完成之前,用户先更新B,然后更新C 在这种情况下,我只希望将最新的调用(字段C的更新)发送到服务器,而不是在A的回复完成之前。我试图在下面说明这一点 我读过好几篇关于去抖动和节流的文章,但我似乎无法对完美的解决方案进行思考,因为这首先不是
- 用户更新字段A
- 将向服务器发送更新票证的请求
- 在A的更新调用完成之前,用户先更新B,然后更新C
非常感谢您的任何意见,谢谢 看起来您需要rxjs
switchmap
操作符Switchmap
将在每次输入observable发出新数据时用新的请求observable替换当前的请求observable。发生这种情况时,第一个请求将被取消
const requestObservable$ = inputObservable$.pipe(
switchmap(yourInputData => this.http.post("...url",yourInputData))
);
requestObservable$.subscribe(response => console.log(response));
requestObservable$
将使用最新数据进行响应。这不起作用。我总是需要当前正在进行的呼叫首先完成(在我的示例中是“A”呼叫)。好的。让它正确。您需要A
来完成,但不需要B
,因为B
将被C
覆盖。因此,最终您希望得到A
和C
的响应,确切地说,在A完成之前,C不应该启动。用户事件是否在相同的可观察状态下发出?是的,它们当然可以。