Я в некотором роде новичок в rxjs (мы долго зависали с angularJS и наконец-то избавились от нашего технического долга).
Используя angular7, у меня есть список таких запросов.Используя forkJoin, я управляю им так:
let requests = []
for (let asset in this.assets)
{
if(asset.enabled)
requests.push(this.apiService.postAsset(oAsset))
}
return forkJoin(requests)
И все работает нормально, я получаю массив ответов. однако Я немного застрял, пытаясь понять, как получить различные обратные вызовы в зависимости от типа ресурса.Я хотел бы что-то вроде
private saveAssets(): Observable<any>{
let requests = []
for (let asset in this.assets)
{
//asset exists already
if(asset.id)
{
requests.push(this.apiService.putAsset(asset)
.subscribe(response => {
// do something with asset
}))
}
else
{
requests.push(this.apiService.postAsset(asset)
.subscribe(response => {
asset.id = response.id
// do some more thing with asset
}))
}
}
return forkJoin(requests)
//keep the forkjoin because I want to do something when everything is done
}
Но это не сработает.Ошибка ERROR TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
связана с вызовом функции, выполняющей запрос, который выглядит следующим образом (он работал без единой подписки):
this.saveAssets()
.subscribe(responses => {
console.log(responses)
})
Любая помощь или подсказка о том, что искать, был бы очень признателен ... Я уделю больше времени изучению RxJS, но сейчас я просто пытаюсь заставить эту маленькую вещь работать не слишком грязно.
Большое спасибо!