@kodwi
https://moikrug.ru/kodwi

Почему take из RxJS пропускает все данные дальше без отсечения?

Из метода возвращаю цепочку, в конце которой .take(5).do(...). Но take не отрабатывает, не берет первые 5 элементов, а пропускает все, что ему пришло, дальше. Все подключено, ошибок / предупреждений в консоли нет вообще. В чем может быть проблема?

getGithubAccounts(firstName: string): Observable<GithubAccount[]> {
    return this.accountList ? Observable.of(this.accountList) :
      this.init
        .delay(this.delayTime)
        .switchMap(() => this._http.get(`${this.githubUrl}${firstName}`))
        .map(list => list.json().items)
        .take(5)
        .do(accountList => this.accountList = accountList);
  }
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
take отберет первые 5 событий из потока, в то время как у вас в потоке будет одно событие, содержащее список из пяти элементов. Чтобы в полученном списке оставить только первые пять элементов трансформируйте сам список

.map(list => list.json().items.slice(0, 5))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы