以前の呼び出しの値を使用してRedditのAPIに再帰的なhttp呼び出しを試みています。問題は、前のコールが次のコールが開始する前に終了していないため、重複したコールが行われていることです。 "after"値が未定義になるまで、 "after"値はすべての呼び出しに対して更新されるべきです。私はこれを見つけたrelated postと解決策を使用しようとしましたが、私は次の呼び出しを行う前に前の呼び出しが終了していることを確認する方法を見つけることができません。以下は、私の実際のコードです:同じ機能getSavedPostsForAuthenticatedUser
を返す角 - RXJS拡張演算子を使用して再帰的なhttp呼び出しを正しく実行する
private getSavedPostsForAuthenticatedUser(username: string, after: string, userPosts: any) {
const headers = new Headers();
if (!userPosts) {
userPosts = [];
}
headers.append('Authorization', `Bearer ${this._token}`);
const redditUrl = `${RetainerConfig.redditOauthUrl}user/${username}/saved`;
const url = after ? `${redditUrl}/?after=${after}` : redditUrl;
return this._http.get(url, { headers: headers })
.map(response => response.json())
.expand(response => {
if (response.data) {
for (const post of response.data.children) {
userPosts.push(post);
}
if (response.data.after) {
return this.getSavedPostsForAuthenticatedUser(username, response.data.after, userPosts);
}
}
return Observable.of(userPosts);
});
おそらく問題の一部は、あなたが 'expand'に渡すプロジェクト関数が空の観測可能性を返さないということです。そうすることなく、私は拡大がどのように止まるか見ることができません。 – cartant
これは正しいです。受け入れられた答えに記載されているように、私は再帰的に、開始のような問題を引き起こす展開演算子を呼び出していました。 – jacobisaman