Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

243
Vistas
Horquilla observableJoin no dispara

Estoy tratando de usar forkJoin en dos Observables. Uno de ellos comienza como una transmisión... Si me suscribo a ellos directamente, obtengo una respuesta, forkJoin no se activa. ¿Algunas ideas?

 private data$: Observable<any[]>; private statuses$: Observable<any[]>; private queryStream = new Subject<string>(); .... this.data$ = this.queryStream .startWith('') .flatMap(queryInput => { this.query = queryInput return this._companyService.getCompanies(this.queryRequired + ' ' + this.query, this.page, this.sort); }) .share(); ... Observable.forkJoin(this.statuses$, this.companies$) .subscribe(res => { console.log('forkjoin'); this._countStatus(res[0], res[1]); }); // This shows arrays in the console... this.statuses$.subscribe(res => console.log(res)); this.companies$.subscribe(res => console.log(res)); // In the console Array[9] Array[6]
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

forkJoin emite solo cuando todos los observables internos se han completado. Si necesita un equivalente de forkJoin que solo escuche una sola emisión de cada fuente, use combineLatest + take(1)

 combineLatest( this.statuses$, this.companies$, ) .pipe( take(1), ) .subscribe(([statuses, companies]) => { console.log('forkjoin'); this._countStatus(statuses, companies); });

Tan pronto como ambas fuentes emitan, combineLatest emitirá y take(1) cancelará la suscripción inmediatamente después de eso.

about 4 years ago · Santiago Trujillo Denunciar

0

Un problema muy común con forkJoin es que requiere que todos los Observables de origen emitan al menos un elemento y todos deben completarse.

En otras palabras, si this.statuses$ o this.companies$ no emite ningún elemento y hasta que ambos completen, forkJoin no emitirá nada.

 this.statuses$.subscribe( res => console.log(res), undefined, () => console.log('completed'), );
about 4 years ago · Santiago Trujillo Denunciar

0

forkJoin no funcionó, así que usé el siguiente código para resolver mi problema. Con mergeMap puede asignar el resultado de la suscripción externa a la suscripción interna y suscribirse como desee

 this.statuses$.pipe( mergeMap(source => this.companies$.pipe( map(inner => [source , inner]) ) ) ).subscribe(([e , r]) => { console.log(e , r); })
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda