Рекурсивный HTTP-вызов с использованием rxjs с изменением queryParams - PullRequest
0 голосов
/ 30 мая 2019

Я ожидаю, что функциональность, использующая NestJS, будет выполнять вызов API, и в случае, если я получу токен для следующего вызова, мне нужно будет запросить тот же API с тем же токеном, что и параметры запроса. Ограничение: API возвращает только 50 записей без токена, поэтому для получения следующих записей мне нужно прикрепить параметры запроса. В случае, если токен пуст, мне нужно завершить вызов. Извлечение видео с YouTube против определенного uploaderId.

Образец, который я написал.

getPlaylistVideos(playlistId: string): any {
    this.videos = [];
    return new Promise((resolve, reject) =>
        this.http
            .get(this.getPlaylistURL(playlistId, ''))
            .pipe(
                map(response => response.data),
                tap(() => console.log('\t', `Getting details by URL: this.http.get(this.getPlaylistURL(${playlistId})`)),
                tap(videoResponse => {
                    this.videos.push(...videoResponse.items);
                    if (videoResponse['nextPageToken']) {
                        console.log('\t', 'NextToken: ', videoResponse['nextPageToken']);
                        return mergeMap(video => {
                            console.log('\t', `this.http.get(this.getPlaylistURL(${playlistId}, ${video['nextPageToken']})`);
                            return this.http.get(this.getPlaylistURL(playlistId, video['nextPageToken']));
                        });
                    } else {
                        console.log(`videoResponse:`, videoResponse['nextPageToken']);
                        return empty();
                    }
                })
            )
            .toPromise()
            .then(response => resolve(this.videos))
            .catch(err => reject(err))
    );
}

Не удается получить следующий набор записей.

...