es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encuesta de 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 llamada FRONT_PAGE. La acción se despacha una vez que la aplicación inicia y la solicitud del cliente debe ser enviada dos veces por segundo. Las solicitudes se están enviando pero estoy recibiendo el siguiente error.

js
×
TypeError: Object(…)(…) no es una función
Observable.pipe
A:src/internal/Observable.ts:439
▶ 2 marcos de pila fueron colapsados.
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("Sondeando el servidor..."); return x })
            .pipe(map(response => response.json())))
}

export const serverdispatch = action => {
    switch (action.type) {
        case FRONTPAGE: {
            poll_server('http://localhost:8080/warnings')
        }
        default:
            return of(action)
    }
}

El punto final
js
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();
}
})

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error viene de la función Observable.pipe. Parece que el operador map no está recibiendo una función como argumento. Asegúrate de que el operador map reciba una función como argumento. Además, asegúrate de que se esté llamando a la función fetch con el URL correcto.

Comments are closed.