Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

263
Views
Cómo manejar una variedad de solicitudes en la saga redux

Estoy tratando de cargar varios archivos desde mi aplicación nativa de reacción. Está dando un error de Unexpected Token en la declaración de rendimiento.

¿Es posible hacer yield dentro de un bucle?

 files.map((fileOb)=>{ const response=yield call(FileManager.uploadFile, fileOb) yield put(Actions.fileUploaded(response)) })

Gracias, lo siento por mi mal inglés.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

En su ejemplo anterior, está cediendo dentro de la devolución de llamada pasada a files.map . No funciona porque puede usar el yield solo dentro de una función de Generador.

Para manejar solicitudes paralelas, puede producir matrices de efectos

 function* uploadFiles(files) { const responses = yield files.map(fileOb => { return call(FileManager.uploadFile, fileOb) }) yield responses.map(response => { return put(Actions.fileUploaded(response)) }) }

Tenga en cuenta que, en este caso, todas las llamadas deben tener éxito para enviar las acciones. es decir, las acciones no se enviarán hasta que todas las llamadas se resuelvan con éxito (de lo contrario, Saga cancelará las llamadas restantes y generará un error).

Otra forma (quizás lo que esperarías) es tener sagas paralelas para cada proceso individual (call -> put). Por ejemplo

 function* uploadFiles(files) { yield files.map(file => call(uploadSingleFile, file)) } function* uploadSingleFile(file) { try { const response = yield call(FileManager.uploadFile, file) yield put(Actions.fileUploaded(response)) } catch(err) { yield put(Actions.fileUploadedError(response)) } }

En el último ejemplo, se enviará una acción de carga tan pronto como se haya devuelto la llamada correspondiente. Además, debido a que hemos rodeado cada proceso individual con un bloque de prueba/captura, cualquier error se manejará individualmente y no hará que los otros procesos de carga fallen.

over 4 years ago · Santiago Trujillo Report

0

Esto funcionó para mí para pasar varios archivos a la función de generador uploadSingleFile.

 function* uploadFiles(files) { yield all(files.map(file => call(uploadSingleFile, file))); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!