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

172
Vistas
¿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 Respuestas
Responde la pregunta

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