javascript - 我如何解析另一个 Observable 中的一个 Observable? - RXJS

标签 javascript rxjs

我有一个 Observable,我在其中使用了另一个 observable,但是第二个 Observable 我无法解析。这是代码:

return Observable.fromPromise(axios(config))
        .map(res => {
            return {
                accessToken: res.data.access_token,
                refreshToken: res.data.refresh_token                
            }
        })
        .map(res => {
            return {
                me: getMe(res.accessToken),
                accessToken: res.accessToken,
                refreshToken: res.refreshToken                
            }
        })

function getMe(accessToken) {
    return Observable.fromPromise(axios.get({
        url: 'https://api.spotify.com/v1/me',
    }));
}

getMe 函数返回一个Observable,但它从未被解析。我尝试添加一个 flatMap 和一个 concat,但仍然没有解决。如何让 getMe 解析?

最佳答案

您是否尝试过以下操作(同样未经测试):

function getMe(accessToken) {
  return Rx.Observable.fromPromise(axios.get({
    url: 'https://api.spotify.com/v1/me',
  }));
}    

Rx.Observable.fromPromise(axios(config))
    .map((res) => {
        return {
            accessToken: res.data.access_token,
            refreshToken: res.data.refresh_token                
        }
    })
    .flatMap((res) => {
        return getMe(res.accessToken).map((res2) => {
          res.me = res2;
          return res;
        }
    })
    .subscribe((data) => console.log(data));

如上篇文章所述,flatMap 返回一个可观察对象。 map 随后用于将 res 与第二个 promise 返回的结果 res2 合并。

另请注意,fromPromise 是一个冷可观察对象。这意味着您必须订阅才能启动。在你的情况下,我认为你已经有了这样的东西:

someFunction = () => {
  return Rx.Observable.fromPromise(axios(config))
     ...
     ...
}

someFunction.subscribe((data) => console.log(data));

关于javascript - 我如何解析另一个 Observable 中的一个 Observable? - RXJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34190650/

相关文章:

Angular +RxJS : Make multiple Server calls within flatMap and retrieve them in subscribe

javascript - 获取在 JavaScript 函数中的 DatePicker 中选择的日期

javascript - 为什么我的 <marquee> 中的 link/span 标签在 Firefox 中出现在多行上?

RxJS 观察一个对象

javascript - observable 错误,尝试使用 get 方法

angular - 纯 rxjs if/else 语句未通过合并到达 else 语句

rxjs - 在 Rx 中,我可以获取完整的序列,而不是仅获取最后一个去抖对象吗?

javascript - 为 Google Action 调用意图后播放音频

javascript - 为什么使用正则表达式替换 javascript 字符串会从我的 br 标签中删除 "/"

javascript - 强制 Canvas 更新