Я работаю в Angular 2, и я делаю серию асинхронных вызовов из службы. Некоторые вызовы должны быть сделаны условно только в моей цепочке вызовов. Мои первоначальная цепочка вызовов выглядит следующим образом:Условное наблюдение за цепью в угловом 2
псевдокоде
this.post().flatMap(() => this.put()).flatMap(() => this.get())..etc.
Тогда мне нужно условно приложить дополнительные асинхронные вызовы к моей сети на основе переменного массива.
Я использую такой подход:
псевдокоде
...flatMap(() => return this.additionalCallsFunction(callArray))
.flatMap(() => this.finalPostRequest()).subscribe(...)
additionalCallsFunction(callArray){
if(callArray.length === 0) return Observable.empty()
else { return this.get().concatMap((res) => this.put(res).flatMap(() => {
callArray.removefirstItem()
return this.additionalCallsFunction(callArray)
});
}
Я достаточно новый для угловых и наблюдаемых характеристик, так что я не уверен, что я правильно приближаюсь к этому , Независимо от того, пустой или нет мой дополнительный массив вызовов, или нет, я вижу, что мои начальные звонки происходят, но ни дополнительные вызовы, ни мой окончательный запрос на почту никогда не проходят, когда моя функция возвращается. Я также не вижу ошибок в консоли. Я попытался заменить .empty() на .never(), но никаких изменений.
Любая помощь/совет оценены!
Поскольку мне действительно не нужны дополнительные функции, предоставляемые Observables, я просто решил использовать метод toPromise() и решил его с помощью обещаний. Было бы аккуратно знать, где я ошибся. – wincelet