我现在正在使用ERROR
,因为它可以同步处理异步代码(就像以前结果中的值一样一对一地处理),但是我不知道它是如何做到的。该文档似乎并未解释这种行为是操作员的一部分。
在RxJS文档flatMap
上定义为:
将每个源值投影到一个Observable中,该值将合并到 输出可观察。
我需要在管道中处理flatMap
,observable
和promise
代码的组合。大部分时间通过管道传输的数据取决于其前身:
synchronous
from(
// asyncrhonously fetch data from server
fetchDataAsync(credentials) // returns an Observable
).pipe(
flatMap((data) => {
// process the data with a promise
return from(processDataAsync(data))
}),
flatMap((data) => {
// sanitize the data with synchronous fn
return of(sanitizeDataSync(data))
}),
flatMap((data) => {
// store the data in local storage with a promise
return from(storeDataAsync(data))
})
)
有效,但是我不知道如何或为什么。如何在其他运算符中找到这种行为?
基本上,我希望可以像典型的异步函数一样运行的可观察流的好处。 flatMap
是做什么的?
RX-way
答案 0 :(得分:1)
flatMap
操作符不会同步执行代码:每次接收到Observable
类型的事件时,它都会订阅它并在返回的同一Observable
中发出其事件。顺便说一下,在最新版本中,它已重命名为mergeMap
,从而更好地描述了它的行为。