rxjs - 返回最近事件的响应,而不是最后一个异步响应

标签 rxjs

我在一个页面上有 3 个按钮,每个按钮都发出单独的异步请求。此页面的内容应显示最后一次单击按钮生成的请求返回的文本。

如果我合并这些流,页面的内容始终是上次完成的异步请求的文本,而不是上次点击的文本。

这是一个例子。 (S*) 是流,(C) 他们的点击,(R) 他们的响应。我的代码将导致 S3 单击呈现在页面上。但是,我希望渲染 S2 的内容,因为这是最后的单击。

S1 --c-r-------------
S2 --------c---r-----
S3 ------c----------r

最佳答案

使用switchAll 。像这样的东西:

const s1 = clickStream1.map(() => someAsync1())
const s2 = clickStream2.map(() => someAsync2())
const s3 = clickStream3.map(() => someAsync3())

const stream = merge(s1, s3, s3).pipe(
    switchAll()
)

每次发生新的点击(并且开始新的异步操作)时,流将“忘记”任何先前的正在进行的操作并开始监听新操作。

关于rxjs - 返回最近事件的响应,而不是最后一个异步响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926336/

相关文章:

javascript - RXJS - flatMap 冗余使用?

angular - 哪个运营商有条件地链接 Observables?

javascript - 如何在完成两个 Angular 2 订阅后调用一个函数?

angular - 结合多个最新版本的 observable、ngrx

javascript - 错误 : Cannot find module "rxjs/operators" in Ionic Angular

javascript - 在组件初始化之前加载数据 - angular 2

angular - BehaviorSubject Observable 上的运算符不起作用

javascript - RxJS:连接三个 promise ,区分结果

javascript - 如何跟踪 Angular 项目中的 `EmptyError: no elements in sequence` 错误

用于 requestAnimationFrame 的 RxJS 自定义调度程序