私はObservable
を持っていますが、私は別の観察可能なものを消費しますが、第2のObservable
は解決できません。ここでは、コードは次のとおりです。Observable内の他のObservableをどのように解決するのですか? - rxjs
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
を取得するにはどうすればよいですか?
興味深い提案。それをテストする価値があるかもしれません。私の考えでは、クロージャから 'res'にアクセスする可能性のある問題があります。私はこれについてはわかりませんが、 'res。私の体は 'getMe'が値を出すときにのみ実行/評価され、' res'変数がまだその値を保持しているのか疑問です。私は、Observablesと関連して純粋な関数のみを使って、これを防衛的に記述します。私はあまりにも慎重であるかどうかを知ることに興味があります。 – user3743222
クロージャの観点からは、 'res'はまだ値を保持しています(私は以前この手法を使っていました)。私は、コーディングの防衛スタイルを持ち、徹底的にテストすることがベストだと同意します。 'getMe()'が解決する前に 'Rx.Observable.fromPromise(axios(config))'実行が2番目にある場合、2つのサブスクライブ実行があります。これは 'flatMapLatest'を使うことで簡単に解決できます。これにより、1回のsubscribe実行で最新の' getMe() 'レスポンスを確実に得ることができます。 – Jeremy
フェア十分です。説明をありがとう。 – user3743222