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

264
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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