У меня есть следующий фрагмент кода:
public getDomains(): Observable<any[]> {
const customer = this.storage.getCustomer();
const apiUrl= this.configuration.getApiUrl(customer);
return this.http.get((`${apiUrl}/domains`).toLowerCase())
.map((response) => response.json() || []);
}
const domains = this.myService.getDomains().
.shareReplay()
.concatMap((domains) => domains.map((domain) => this.toDomainModel(domain, myObservable)))
.filter((domain) => this.isValidDomain(domain))
.toArray();
Моя сетевая вкладка показывает ответ на запрос в виде массива с 3 элементами. Но каким-то образом, даже после удаления всего и оставления только .toArray()
, он превращается в массив из 3 элементов, где каждый элемент сам по себе является массивом из 3 элементов. Сетевой ответ дублируется где-то 4 раза.
Я вызываю метод службы, который возвращает массив элементов, которые я затем отправляю через эту цепочку методов. По какой-то причине, и я полагаю, что это может быть связано с concatMap
, я получаю больше элементов, чем первоначально возвращала конечная точка.
Я должен получить 3 элемента из запроса, а затем фильтр должен удалить 2 из них, поэтому мне следует оставить один. Я новичок в rxjs
, и мне любопытно, является ли это обычным поведением с concatMap
.
Любые идеи? Спасибо
toArray
ответе по сети проблема все еще проявляется, то из кода, который вы разместили, нет никакой информации. - person Jack Guy   schedule 27.01.2018