小编cez*_*ezn的帖子

switchMap 通过 RxJs 中的属性来区分

比方说,我有一系列行动。每个动作都被分配了一些id。像这样:

const actions$ = of({ id: 1 }, { id: 2 }, { id: 1 });
Run Code Online (Sandbox Code Playgroud)

现在,对于每个操作,我想在 switchMap 中执行一些逻辑:

actions$.pipe(switchMap(a => /* some cancellable logic */)).subscribe(...);
Run Code Online (Sandbox Code Playgroud)

问题在于每个发出的操作都会取消之前的“某些可取消的逻辑”。

是否可以根据操作id (最好是运算符)取消“某些可取消逻辑” ?就像是:

actions$.pipe(switchMapBy('id', a => /*some cancellable logic */)).subscribe(...)
Run Code Online (Sandbox Code Playgroud)

本质上,switchMap的当前行为
1. actions$发出 id #1。switchMap订阅嵌套的 observable。
2. actions$发出 id #2。switchMap取消订阅先前的嵌套可观察值。订阅新的。
3. actions$发出 id #1。switchMap再次取消订阅先前的嵌套可观察值。订阅新的。

预期行为
1. actions$发出 id #1。switchMap订阅嵌套的 observable。
2. actions$发出 id #2。switchMap再次订阅嵌套的 …

javascript rxjs ngrx redux-observable switchmap

4
推荐指数
1
解决办法
870
查看次数

为什么我们在打字稿中使用HTMLInputElement?

我们为什么使用:

(document.getElementById("ipv") as HTMLInputElement).value;
Run Code Online (Sandbox Code Playgroud)

代替:

document.getElementById("ipv").value;
Run Code Online (Sandbox Code Playgroud)

javascript typescript

2
推荐指数
2
解决办法
1680
查看次数