我有一个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
与res2
第二个promise中返回的结果合并.
还要注意,这fromPromise
是一个冷的观察.这意味着您必须订阅才能启动.在你的情况下,我认为你已经有这样的事情:
someFunction = () => { return Rx.Observable.fromPromise(axios(config)) ... ... } someFunction.subscribe((data) => console.log(data));