fjc*_*fjc 9 observable rxjs typescript
我正在玩RXJS for TypeScript,偶然发现了一个我自己无法解释的问题。我有一个observable发出多个字符串的。然后,我想将其应用于switchMap每个字符串前面的“ a”:
var o = Observable.create((observer) => {
observer.next("hi")
observer.next("bla")
})
o.switchMap(str => "a" + str).subscribe(str => console.log(str))
Run Code Online (Sandbox Code Playgroud)
我的预期输出:
ahi
abla
Run Code Online (Sandbox Code Playgroud)
实际输出:
a
h
i
a
b
l
a
Run Code Online (Sandbox Code Playgroud)
因此,在switchMap和subscription之间的某个位置,字符串显然被分解为字符。
有人可以解释为什么会这样吗?
ols*_*lsn 10
我想您打算使用map而不是switchMap。
switchMap实际上期望一个ObservableInput作为返回值的值,在您的情况下,该值是一个字符串,该值又被视为一个数组,因此分成多个元素。
要获得预期的结果,switchMap您可以:
o.switchMap(str => Observable.of("a" + str))
.subscribe(str => console.log(str));
Run Code Online (Sandbox Code Playgroud)
但更好地使用:
o.map(str => "a" + str)
.subscribe(str => console.log(str))
Run Code Online (Sandbox Code Playgroud)
管道的新语法:
o.pipe(
map(str => "a" + str)
).subscribe(str => console.log(str))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |