flatMap如何同步执行代码?

时间:2019-01-13 20:07:18

标签: javascript angular rxjs

我现在正在使用ERROR,因为它可以同步处理异步代码(就像以前结果中的值一样一对一地处理),但是我不知道它是如何做到的。该文档似乎并未解释这种行为是操作员的一部分。

在RxJS文档flatMap上定义为:

  

将每个源值投影到一个Observable中,该值将合并到   输出可观察。

我需要在管道中处理flatMapobservablepromise代码的组合。大部分时间通过管道传输的数据取决于其前身:

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

1 个答案:

答案 0 :(得分:1)

flatMap操作符不会同步执行代码:每次接收到Observable类型的事件时,它都会订阅它并在返回的同一Observable中发出其事件。顺便说一下,在最新版本中,它已重命名为mergeMap,从而更好地描述了它的行为。