Tengo algunas emisiones de socket.io que me gustaría gestionar cuando tardan demasiado en volver del servidor con su promesa. Pero tampoco quiero dejarlos completamente fuera de tiempo. He visto esto en algunos sitios web donde una rueda giratoria de carga agregará el texto "Parece que está tardando más de lo habitual" después de 10 o más segundos.
¿Cómo puedo agregar un método de estilo de tiempo de espera a una función de Javascript que hará algo después de una cierta cantidad de tiempo, pero NO cancelará el método original?
A menos que tenga un alcance global, deberá pasar dos controladores
Algo como esto (he generalizado el flujo porque no ha proporcionado suficiente información sobre su configuración existente, así que espero que tenga sentido)
function doSocketRequest(normalHandler, tooLongHandler) { let timer = null; // set timeout to 5 seconds, if we hit it then trigger "tooLongHandler" timer = setTimeout(tooLongHandler, 5000); // When we receive our socket response for the event, clear the time and trigger "normalHandler" socket.on('some_event_response', (response) => { clearTimeout(timer); normalHandler(response) }); // Emit to server socket.emit('some_event', ...etcetc); }