如何解决Angular 上一次调用完成时发送最新的 http 请求
我正在努力实现以下目标:
我有一个包含 4 个字段(A、B、C、D)的请求表,用于更新工单。每当用户退出字段时(在键入内容后),应向服务器发送请求以更新该票证。但是,请想象以下场景:
- 用户更新字段 A
- 向服务器发送请求以更新票证。
- 用户在 A 的更新调用完成之前先更新 B,然后更新 C
在这种情况下,我只希望将 最新 调用(字段 C 的更新)发送到服务器,而不是在 A 的回复完成之前。我试图在下面说明这一点。
我已经阅读了几个关于去抖动和节流的地方,但我似乎无法理解完美的解决方案,因为这首先不是基于时间,其次它不应该忽略当前正在进行的事件,这似乎是排除两者。
我想过实现一种缓冲区,只为一件物品留出空间,但我认为必须有更好的解决方案。
非常感谢任何输入,谢谢!
解决方法
看起来您需要 rxjs switchmap
运算符。每次您的输入 observable 发出新数据时,Switchmap
都会用新的请求 observable 替换当前请求 observable。发生这种情况时,第一个请求将被取消。
const requestObservable$ = inputObservable$.pipe(
switchmap(yourInputData => this.http.post("...url",yourInputData))
);
requestObservable$.subscribe(response => console.log(response));
requestObservable$
将响应最新数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。