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

196
Vistas
Cómo se pasa el parámetro de la función lambda al cuerpo de la función

Soy nuevo en javacscript y mecanografiado, encontré un código en línea, no lo entiendo, ¿puedes explicarlo?

Gracias

código original https://www.learnrxjs.io/learn-rxjs/operators/error_handling/retrywhen

 export const genericRetryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [] }: { maxRetryAttempts?: number, scalingDuration?: number, excludedStatusCodes?: number[] } = {}) => (attempts: Observable<any>) => { return attempts.pipe( mergeMap((error, i) => { const retryAttempt = i + 1; // if maximum number of retries have been met // or response is a status code we don't wish to retry, throw error if ( retryAttempt > maxRetryAttempts || excludedStatusCodes.find(e => e === error.status) ) { return throwError(error); } console.log( `Attempt ${retryAttempt}: retrying in ${retryAttempt * scalingDuration}ms` ); // retry after 1s, 2s, etc... return timer(retryAttempt * scalingDuration); }), finalize(() => console.log('We are done!')) ); };

Primera pregunta, ¿cómo funciona este código?

 export const genericRetryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [] }: { maxRetryAttempts?: number, scalingDuration?: number, excludedStatusCodes?: number[] } = {})

segunda pregunta, hay **=> (attempts: Observable<any>)** => entre el código anterior y el cuerpo de la función, cómo se **maxRetryAttempts** al cuerpo de la función.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

export const genericRetryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [] }: { maxRetryAttempts?: number, scalingDuration?: number, excludedStatusCodes?: number[] } = {})

Esto declara una función que toma un argumento. Esa parte después de : en la línea 5 escribe ese objeto como un objeto con tres propiedades, cada una de las cuales puede no estar undefined u omitirse (eso es lo que significa ? ).

En las líneas 2-4 vemos que este objeto está desestructurado, de modo que cada propiedad se convierte en una variable local. Además, cada variable tiene un valor predeterminado (el = 3 después del nombre de la variable) en caso de que esa propiedad no tenga valor en el objeto de argumento.

La última línea proporciona un valor predeterminado para todo el objeto, lo que significa que puede omitirlo por completo.


Ahora para esta línea:

 //... } = {}) => (attempts: Observable<any>) => {

En resumen, esta función devuelve una función.

Un ejemplo más simple:

podrías escribir esto:

 const a = (x: number) => { return (y: number) => x * y } const b = a(2) b(3) // 6
 const a = (x: number) => (y: number) => x * y const b = a(2) b(3) // 6

En lenguaje sencillo, a es una función que, devuelve una función, que devuelve un valor.

En el caso del código en su pregunta, genericRetryStrategy toma un objeto que configura cómo se reintentará la operación y devuelve una función. Esa función que toma un observable para operar, que se vincula de acuerdo con la forma en que llamó por primera vez a genericRetryStrategy


Así que para resumir:

 export const genericRetryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [] }: { maxRetryAttempts?: number, scalingDuration?: number, excludedStatusCodes?: number[] } = {}) => (attempts: Observable<any>) => { //.. }

se llama así:

 const strategy = genericRetryStrategy({ maxRetryAttempts: 10 }) const doWithRetries = strategy(myObservable)
about 4 years ago · Juan Pablo Isaza 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