Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
Sondeo del servidor RxJS

Necesito sondear el servidor y actualizar los datos en el lado del cliente. Para eso tengo un despachador que despacha una acción que se llama FRONT_PAGE . La acción se envía una vez que se inicia la aplicación y el cliente debe enviar solicitudes dos veces por segundo. Las solicitudes se están enviando pero recibo el siguiente error.

 × TypeError: Object(...)(...) is not a function Observable.pipe A:src/internal/Observable.ts:439 ▶ 2 stack frames were collapsed. doInnerSub A:internal/operators/mergeInternals.ts:71 outerNext A:internal/operators/mergeInternals.ts:53 50 | } 51 | })); 52 | }; > 53 | source.subscribe(new OperatorSubscriber(subscriber, outerNext, function () { | ^ 54 | isComplete = true; 55 | checkComplete(); 56 | }));

El código.

 import { from, of, timer } from 'rxjs' import { ajax } from 'rxjs/ajax' import { map } from 'rxjs/operators' import { FRONT_PAGE } from './constants' const poll_server = url => { timer(0, 500) .pipe(from(fetch(url)) .pipe((x) => { console.log("Polling server.."); return x }) .pipe(map(response => response.json()))) } export const server_dispatch = action => { switch (action.type) { case FRONT_PAGE: { poll_server('http://localhost:8080/warnings') } default: return of(action) } }

el punto final

 app.get('/warnings', (req, res) => { console.log("[GET] /warnings") const baseline = req.query.baseline ?? -1 if (version > baseline) { res.send(warnings(alerts.filter(a => a.prediction))) } else if (game) { res.status(204).send({}) } else { res.status(404).send(); } })
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

1. poll_server es una función que casi no tiene efectos y luego devuelve nada/vacío.

Por ejemplo:

 // return arg + 1 const lambdaFunction = arg => arg + 1; // returns nothing const lambdaFunction = arg => {arg + 1;}; // return arg + 1 const lambdaFunction = arg => {return arg + 1;};

2. .pipe(from(fetch(url)).pipe(... ¿Qué estás intentando aquí?

from not no es un operador canalizable. Puede usarlo para crear un observable a partir de una promesa, observableLike o iterador. No como un operador componible.


3. Lo siguiente realmente funciona porque los operadores son en realidad solo funciones (¡por qué se pueden componer tan bien!). Entonces, la función de identidad aquí está bien, pero estoy bastante seguro de que no está haciendo lo que crees que es.

 .pipe((x) => { console.log("Polling server.."); return x })

console.log("Polling server..") se ejecutará antes de que se suscriba a su observable. En caso de que esto ocurra, su observable aquí nunca se suscribe (ya que nunca se devuelve), pero imagino que podría ver "Servidor de sondeo..." en la consola de todos modos.


4.

 .pipe(x => { console.log("Polling server.."); return x }) .pipe(map(response => response.json())))

es lo mismo que:

 .pipe( x => { console.log("Polling server.."); return x }, map(response => response.json()) )

Eso es porque las aplicaciones de encadenamiento son lo mismo que la composición.


5. server_dispatch solo devuelve un observable para el caso predeterminado en el conmutador. De lo contrario, devuelve undefined . ¿Es ese realmente el comportamiento que desea?

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda