当前位置:  开发笔记 > 编程语言 > 正文

如何解析另一个Observable中的Observable? - rxjs

如何解决《如何解析另一个Observable中的Observable?-rxjs》经验,为你挑选了1个好方法。

我有一个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如何解决?



1> 小智..:

您是否尝试过以下(也未经测试):

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随后用于resres2第二个promise中返回的结果合并.

还要注意,这fromPromise是一个冷的观察.这意味着您必须订阅才能启动.在你的情况下,我认为你已经有这样的事情:

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

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

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有