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 次 |
最近记录: |