该文档不足以帮助我理解它们之间的区别。
就像concatMap,但始终将每个值映射到相同的内部Observable。 http://reactivex.io/rxjs/file/es6/operators/concatMapTo.js.html
我尝试查看关于stackblitz的learningrxjs.io的示例,但是即使有了这些示例,我也无法立即识别出区分这些特征的区别。
仅供参考,我看到了另一个类似的问题 ,mergeMap和mergeMapTo有什么区别? 但是那里的答案并不令人满意,因为在learnerxjs.io示例中,它们显然映射到可观察对象,而不是硬编码值。 https://www.learnrxjs.io/operators/transformation/concatmapto.html
如果有人可以提供一些示例(也许是简短的解释)来帮助区分***与***,以区分高阶可观察算子,谢谢,谢谢。
简而言之,带有的 变量*To将始终使用创建整个链时需要创建的相同Observable,而与链发出的值无关。它们将Observable作为参数。
没有的 变量*To只能在其源Observable发出时创建并返回任何Observable。他们将回调作为参数。
例如,当我使用时,mergeMapTo我总是订阅相同的Observable:
source.pipe(
mergeMapTo(of(1)),
)
Run Code Online (Sandbox Code Playgroud)
来自的每个发射source都将始终被映射到,of(1)并且我无法更改它。
另一方面,mergeMap我可以根据接收到的值返回我想要的任何Observable:
source.pipe(
mergeMap(v => of(v * 2)),
)
Run Code Online (Sandbox Code Playgroud)
考虑这一点的一种更简单的方法可能是记住,*To变体将值映射到常数(即使它不是“真正的JavaScript常数”)。
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |