javascript - 循环/映射从 .flatMap 返回的数组

标签 javascript rxjs

这是一个真正入门级的响应式编程问题。以下代码将从 github 中记录一组 users。我怎样才能使用 Rx 访问记录每个单独的 user.login

import axios from 'axios'
import Rx from 'rx'

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

let getJSON = (url) => {
  return axios.get(url).then(response => response.data)
}

let responseStream = requestStream
  .flatMap(function(requestUrl) {
    return Rx.Observable.fromPromise(getJSON(requestUrl))
  })

responseStream.subscribe(function(response) {
  console.log(response)
})

我试过:

let responseStream = requestStream
  .flatMap(function(requestUrl) {
    return Rx.Observable.fromPromise(getJSON(requestUrl))
  })
  .flatMap(user => {
    console.log(user)
  })

和:

let users = responseStream
  .flatMap(user => {
    console.log(user)
  })

users.subscribe(function(response) {
  // console.log(response)
})

最佳答案

要从数组中获取每个用户,请创建并返回该数组的一个新的可观察对象,如下所示:

let responseStream = requestStream
  .flatMap(function(requestUrl) {
    return getJSON(requestUrl);
  })
  .flatMap(function(usersResponse) {
    return rx.Observable.from(usersResponse);
  })
  .doOnNext(function(user) {
    console.log(user);
  });

当您调用 responseStream.subscribe(......) 时,它现在应该从 .doOnNext() 方法中单独注销每个用户。

我使用 Mosho 的答案作为此响应的基础,并假设第一个 flatMap 从 github 返回一个用户数组。

关于javascript - 循环/映射从 .flatMap 返回的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35322111/

相关文章:

Angular 2/RXJS - 需要一些帮助来处理请求

javascript - Lit-Element:哪个事件用于 DOM 更新?

javascript - DataMaps.js - 网络天气 map (入站和出站弧线)

javascript - 如何用ngDialog弹出窗口?

angular - take(1) 和 unsubscribe 的区别

RXJS 等待所有 Observables 完成并返回结果

javascript - 表单重置函数返回未定义

javascript - addeventlistener 丢弃错误 "Uncaught TypeError: Illegal invocation"

rxjs - 是否可以通过发出 Action 来启动/停止/恢复 redux-observable 史诗?

angular - 如何在rxjs中实现函数调用的队列?