복붙노트

[ANGULAR] 각도 - RXJS를 사용하여 올바르게 운영자를 확장하여 재귀 적품 호출을하십시오

ANGULAR

각도 - RXJS를 사용하여 올바르게 운영자를 확장하여 재귀 적품 호출을하십시오

해결법


  1. 1.동일한 함수를 반환하는 GetSavedPostSforauthenticationUser는 재귀 적 확장을 일으 킵니다. 이를 해결하려면 HTTP Observable을 분리해야합니다.

    동일한 함수를 반환하는 GetSavedPostSforauthenticationUser는 재귀 적 확장을 일으 킵니다. 이를 해결하려면 HTTP Observable을 분리해야합니다.

      private getSavedPostsForAuthenticatedUser(username: string, after: string, userPosts: any) {
        const request$ = this._getRequest(username, after, userPosts);
        if (!userPosts) {
          userPosts = [];
        }
        return request$
          .expand(response => {
            if (response.data) {
              for (const post of response.data.children) {
                userPosts.push(post);
              }
              if (response.data.after) {
                return this._getRequest(username, response.data.after, userPosts);
              }
            }
            return Observable.of(userPosts);
          });
      }
    
      private _getRequest(username: string, after: string) {
        const headers = new Headers();
        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());
      }
    

    확장을 중지하려면 Observable.Empty ()를 사용할 수 있습니다. 이 게시물을 참조하십시오.

  2. from https://stackoverflow.com/questions/44981974/angular-correctly-using-rxjs-expand-operator-to-make-recursive-http-calls by cc-by-sa and MIT license