我有一个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',
}));
}
Run Code Online (Sandbox Code Playgroud)
该getMe
函数返回一个Observable
,但它永远不会被解析.我试图添加一个flatMap
和一个concat
,但它仍然没有解决.我该getMe
如何解决?
小智 8
您是否尝试过以下(也未经测试):
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));
Run Code Online (Sandbox Code Playgroud)
如上文所述,flatMap
返回一个可观察的.map
随后用于res
与res2
第二个promise中返回的结果合并.
还要注意,这fromPromise
是一个冷的观察.这意味着您必须订阅才能启动.在你的情况下,我认为你已经有这样的事情:
someFunction = () => {
return Rx.Observable.fromPromise(axios(config))
...
...
}
someFunction.subscribe((data) => console.log(data));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13683 次 |
最近记录: |