为什么我们需要使用flatMap?

用户233232:

我开始使用RxJS,但我不明白为什么在此示例中我们需要使用类似flatMapor 的函数concatAll数组的数组在哪里?

var requestStream = Rx.Observable.just('https://api.github.com/users');

var responseMetastream = requestStream
  .flatMap(function(requestUrl) {
    return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl));
  });

responseMetastream.subscribe(url => {console.log(url)})

如果有人可以直观地解释正在发生的事情,那将非常有帮助。

用户3743222:

当我开始看时,Rxjs我也偶然发现了那块石头。帮助我的是以下几点:

  • 来自reactx.io的文档。例如,对于flatMaphttp : //reactivex.io/documentation/operators/flatmap.html
  • 来自rxmarbles的文档:http: //rxmarbles.com/ 您不会在flatMap找到,必须去看看mergeMap(另一个名字)。
  • 您缺少的Rx简介:https : //gist.github.com/staltz/868e7e9bc2a7b8c1f754它解决了一个非常相似的例子。特别是它解决了一个承诺类似于仅发出一个值的可观察对象的事实。
  • 最后查看来自RxJava的类型信息。未键入Javascript在这里没有帮助。基本上,if Observable<T>表示一个可观察对象,该对象可推入T类型的值,然后flatMap将type函数T' -> Observable<T>作为其参数,然后返回Observable<T>map接受type函数T' -> T并返回Observable<T>

    回到您的示例,您有一个从URL字符串产生promise的函数。所以T' : stringT : promise而从我们之前说的promise : Observable<T''>,所以T : Observable<T''>,有T'' : html如果将那个Promise Production函数放入中map,您将获得所需的Observable<Observable<T''>>时间Observable<T''>:您希望可观察对象发出html值。flatMap之所以这样称呼,是因为它会使()的结果变平(除去可观察层)map根据您的背景,这对您来说可能是中文,但是通过输入信息和来自此处的图纸,一切对我来说都非常清楚:http : //reactivex.io/documentation/operators/flatmap.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

我们为什么需要使用生成器设计模式时,我们可以做同样的事情setter方法?

来自分类Java

为什么我们需要使用线程来运行Kafka使用者?我们需要多少个线程?

来自分类Javascript

为什么我们需要使用基数?

来自分类Linux

为什么我们需要mktemp?

来自分类Java

为什么我们需要使用awaitTermination而不是shutdownNow()?

来自分类Java

为什么我们需要使用Context.obtainStyledAttributes和define-styleable来获取GUI组件的属性

来自分类Java

为什么我们需要使用Collection.sort()方法对List进行排序?

来自分类Dev

为什么我们需要需求?

来自分类Dev

我们为什么需要`ngDoCheck`

来自分类Dev

为什么我们需要单子?

来自分类Dev

为什么我们通常需要flatMap?

来自分类Dev

为什么我们需要使用导入“ babel-polyfill”;在反应成分?

来自分类Dev

为什么我们需要使用Catch分别编译主测试文件?

来自分类Dev

fabric-tools中的./teardownFabric.sh是什么?以及为什么我们需要使用此命令?

来自分类Dev

为什么在使用__syncthreads时我们不需要使用volatile变量

来自分类Dev

为什么我们不需要使用“ require”语句,但仍然可以使用内置函数?

来自分类Dev

我们为什么要使用end Function?

来自分类Dev

为什么我们需要使用多个版本的JQuery库

来自分类Dev

为什么我们需要使用grunt-useminPrepare

来自分类Dev

我们为什么要使用lua_pushinteger()?

来自分类Dev

为什么我们要使用argv [2] [0]

来自分类Dev

为什么我们需要使用hint.start()?

来自分类Dev

我们为什么要使用docker-registry?

来自分类Dev

为什么我们需要使用双指针来访问二维数组?

来自分类Dev

在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

来自分类Dev

为什么我们需要使用 'get_absolute_url()' 而不是自定义定义的类似方法?

来自分类Dev

为什么我们需要使用标记接口?

来自分类Dev

我们为什么要使用扩展?

来自分类Dev

为什么我们需要使用 .net 扩展名保存 pytorch 模型?

Related 相关文章

  1. 1

    我们为什么需要使用生成器设计模式时,我们可以做同样的事情setter方法?

  2. 2

    为什么我们需要使用线程来运行Kafka使用者?我们需要多少个线程?

  3. 3

    为什么我们需要使用基数?

  4. 4

    为什么我们需要mktemp?

  5. 5

    为什么我们需要使用awaitTermination而不是shutdownNow()?

  6. 6

    为什么我们需要使用Context.obtainStyledAttributes和define-styleable来获取GUI组件的属性

  7. 7

    为什么我们需要使用Collection.sort()方法对List进行排序?

  8. 8

    为什么我们需要需求?

  9. 9

    我们为什么需要`ngDoCheck`

  10. 10

    为什么我们需要单子?

  11. 11

    为什么我们通常需要flatMap?

  12. 12

    为什么我们需要使用导入“ babel-polyfill”;在反应成分?

  13. 13

    为什么我们需要使用Catch分别编译主测试文件?

  14. 14

    fabric-tools中的./teardownFabric.sh是什么?以及为什么我们需要使用此命令?

  15. 15

    为什么在使用__syncthreads时我们不需要使用volatile变量

  16. 16

    为什么我们不需要使用“ require”语句,但仍然可以使用内置函数?

  17. 17

    我们为什么要使用end Function?

  18. 18

    为什么我们需要使用多个版本的JQuery库

  19. 19

    为什么我们需要使用grunt-useminPrepare

  20. 20

    我们为什么要使用lua_pushinteger()?

  21. 21

    为什么我们要使用argv [2] [0]

  22. 22

    为什么我们需要使用hint.start()?

  23. 23

    我们为什么要使用docker-registry?

  24. 24

    为什么我们需要使用双指针来访问二维数组?

  25. 25

    在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

  26. 26

    为什么我们需要使用 'get_absolute_url()' 而不是自定义定义的类似方法?

  27. 27

    为什么我们需要使用标记接口?

  28. 28

    我们为什么要使用扩展?

  29. 29

    为什么我们需要使用 .net 扩展名保存 pytorch 模型?

热门标签

归档