掌握异步流与高阶操作符在实际场景中的应用
1. 异步流与Monad概念基础
理解可观察对象传播其他可观察对象的概念可能需要一些时间,但随着深入学习,它会变得自然易懂。这种软件模式是函数式编程(FP)范式的核心,涉及一种名为monad的数据类型。简单来说,monad暴露一个接口,有三个简单要求,可观察对象能满足这些要求:
- 一个将值提升到monadic上下文的单元函数(如 of()
、 from()
等)。
- 一个映射函数( map()
)。
- 一个映射并扁平化的函数( flatMap()
或 mergeMap()
)。
在实际应用中,嵌套流经常出现,因此对于大多数组合操作符,都有一组联合操作符,这样在进行切换、合并和连接操作时,就无需每次都使用两个操作符。接下来将使用 mergeMap()
解决更复杂的问题。
2. 股票数据实时获取示例
以股票行情小部件为例,之前使用简单的随机数生成器来模拟公司ABC的股票价格波动。现在将集成真实的股票服务,如雅虎财经,以获取特定股票代码的实时数据。具体步骤如下:
1. 创建请求股票数据的可观察对象 :
const csv = str => str.split(/,\s*/);
const webservice = 'http://download.finance.ya