Así que estoy usando forkJoin para completar una cantidad dinámica de solicitudes. Funciona muy bien, pero no obtengo el registro de mi consola cuando me suscribo a forkJoin? Todos los ejemplos que he visto solo hacen una suscripción básica como yo, así que realmente no entiendo por qué no funciona.
También agregué las llamadas de DataService para mayor claridad. ¿Quizás estoy haciendo algo mal allí y es por eso que forkJoin no funciona?
Aquí está mi código:
let requests = []; newAdds.forEach(ele => { requests.push(this._dataService.add(ID1, ID2)); }); forkJoin(requests).subscribe(ret => { console.log(ret); } ); add(id1, id2) { class Add{ ID1: number; ID2: string; }; let data = new Add(); data.ID1 = id1; data.ID2 = id2; let cmd = "Add"; return this.put(this.urlAdmin() + cmd, data); } protected put(cmd: string, body: any) { let headers = new HttpHeaders(); headers.append('Content-Type', 'application/json'); return this._http.put(cmd, body, { headers: headers }); }forkJoin solo emitirá si y solo si todos los observables se han completado.
Este ejemplo nunca se emitirá (el intervalo nunca termina)
forkJoin([interval(1000), interval(2000)]).subscribe(console.log); // won't emitEste ejemplo emitirá el valor [0, 0] después de 2000 ms.
forkJoin([timer(1000), timer(2000)]).subscribe(console.log); // emit [0,0]Si un observable no emite un solo valor pero se completa, forkJoin no emitirá
forkJoin(of()).subscribe(console.log) // won't emit Si al menos 1 observable arroja un error, forkJoin nunca se completará.
forkJoin([of(1), throwError(1)]).subscribe(console.log); // will never emit