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

138
Visualizações
Cómo hacer llamadas API puras en JS

Ahora estoy leyendo "una guía en su mayoría adecuada para la programación funcional" del profesor Frisby, y me preguntaba cómo podemos hacer una búsqueda pura , y vi esta pieza de código aquí en el libro .

 const pureHttpCall = memoize((url, params) => () => $.getJSON(url, params));

Y dice

Lo interesante aquí es que en realidad no hacemos la llamada http; en su lugar, devolvemos una función que lo hará cuando se la llame. Esta función es pura porque siempre devolverá la misma salida dada la misma entrada: la función que hará la llamada http particular dada la url y los parámetros.

donde eso me dejó con cierta confusión, no entiendo cómo pureHttpCall ahora es puro y todavía tiene un código subyacente impuro (la parte de búsqueda).

Entonces, ¿qué me estoy perdiendo aquí que hace que el código sea puro y funcional ?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Lo que hace que la función sea pura es esto:

 memoize( ... )

La memorización es un tipo especial de almacenamiento en caché. Es posible que esté familiarizado con el almacenamiento en caché. Es decir, almacenas el resultado de una operación costosa en una variable y si esa variable ya existe devuelve el valor de esa variable en lugar de realizar la operación costosa. Memoizar es exactamente eso.

La principal diferencia entre memorizar y almacenar en caché es que memorizar es un caché permanente: el algoritmo de almacenamiento en caché más utilizado tiene un proceso de invalidación: podría estar basado en el tiempo (eliminar el caché si es anterior a x ), basado en el recuento (eliminar el caché si hay hay más de x elementos almacenados en caché), basado en la memoria (elimine el caché si el caché usa más de x megabytes de RAM), etc. La memorización nunca elimina el caché. Por lo tanto, la costosa operación se realiza una sola vez .

El hecho de que una operación se realice solo una vez hace que cada llamada a pureHttpCall garantice el mismo resultado. Esto significa que la función ahora es pura.

Sí, puede hacer lo mismo con Math.random() si lo memoriza haciendo que cada llamada a pureRandom devuelva exactamente el mismo número. Y esto haría pureRandom puro porque siempre devuelve el mismo resultado. Personalmente, no lo llamaría una función "aleatoria".

Una implementación muy simple de memoize podría ser algo como esto:

 function memoize (fn) { let cache; return function () { if (cache === undefined) { cache = fn(); } return cache; } }

El código anterior es 100 % síncrono para mayor claridad, pero es posible escribir una versión asíncrona de una función de memorización.

about 4 years ago · Juan Pablo Isaza Relatório

0

Según tengo entendido, el autor argumenta aquí que debido a que se agrega la capa de almacenamiento en caché, la función ahora tiene resultados predecibles:

Una vez que haya hecho una combinación de los argumentos de entrada, esa misma combinación siempre devolverá el mismo resultado que produjo la primera vez.

Entonces, si desconecta su cable de ethernet y hace pureHttpCall("http://google.com") , obtendrá una respuesta de error. Si ahora vuelve a conectar el cable, entonces pureHttpCall("http://google.com") aún producirá exactamente el mismo error que recibió la primera vez.

Sin embargo, no creo que esté de acuerdo, porque aquí hay una dependencia implícita. La función todavía depende del entorno cuando se llama por primera vez. Por ejemplo, si reinicia su programa entre desenchufar y volver a enchufar su cable ethernet, obtendrá resultados diferentes.

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