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

176
Visualizações
¿Cómo esperar a que se envíe la solicitud y luego enviar una nueva solicitud?

tengo un problema. estoy creando una aplicación de chat con react y react redux y estoy usando la biblioteca supabase para enviar solicitudes a mi base de datos supabase. ahora para enviar el mensaje ingresado por los usuarios, tengo un problema. cuando el usuario ingresa diez mensajes juntos al mismo tiempo, esos diez mensajes no se enviarán correctamente a la base de datos y tal vez el último mensaje se envíe correctamente. Ahora, para solucionar este problema, quiero implementar esto: si el usuario ingresa su mensaje, si se envía otra solicitud al mismo tiempo, espere a que se envíe esa solicitud. cuando se envíe esa solicitud, envíe la nueva solicitud. de modo que cuando el usuario ingrese 10 mensajes, por ejemplo, los mensajes se enviarán a la base de datos uno por uno. cada solicitud espera la solicitud de envío y cuando esa solicitud se envía a la base de datos con éxito o tiene un error, luego envía la siguiente solicitud pendiente. Intenté implementar esto pero no pude. porque la función que envía el mensaje de los usuarios a la base de datos es un controlador de eventos y no sé cómo esperar la solicitud de envío. Aquí están los códigos de funciones:

 //a function to store users message in database const sendMessageHandler = async (e) => { e.preventDefault(); //here i want to check if an other request is sending, wait for that request to be sent and then send the new request. //create an object with users message infos const userMessage = { from: username, text: messageRef.current.value, time: `${new Date().getHours()}:${new Date().getMinutes()}`, }; //create an id with the value of current chats length const id = chats[currentIndex].chats.length; //store the users message in sending messages state dispatch( chatsActions.addSendingChat({ ...userMessage, id, name: chats[currentIndex].name, }) ); //create the current messages object to update the group row let currentChats = { name: chats[currentIndex].name, users: chats[currentIndex].users, onlines: chats[currentIndex].onlines, chats: chats[currentIndex].chats, unreads: chats[currentIndex].unreads, }; //add users message to current chats currentChats.chats = [...currentChats.chats, userMessage]; //update the chats of the selected group with the new values const { error } = await supabase .from("chats") .update(currentChats) .eq("id", apiChatId); //after updating the row, delete the users message that was in sending messages state from there dispatch(chatsActions.removeSendingChat(id)); };

Gracias por su ayuda.

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

0

No tengo idea de cómo se implementa esto para la producción, pero lo que puedes hacer es:

  1. Empuje el mensaje sent a una cola (no enviar todavía)
  2. Espere 100 ms (o el tiempo que sea)
  3. Si se envía un nuevo mensaje a la cola dentro de los 100 ms, reinicie el temporizador.
  4. Si no se insertan mensajes nuevos en la cola durante 100 ms, realice una llamada a la API y envíelos todos.
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