我有一个 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/