Voy a nominar condiciones de carrera.
A algunas personas les gusta olvidar que existen condiciones de carrera en javascript, y de hecho, el modelo de concurrencia de javascript hace imposible una gran clase de carreras de datos. Bueno, me encontré con una condición de carrera bastante grave recientemente. Ya sea que lo planee o no, las solicitudes de ajax no son atómicas porque no son sincrónicas. El problema con el que me encontré fue que tenía algunos botones que activaban las solicitudes de ajax y movía al usuario al siguiente paso cuando la solicitud se realizaba correctamente. Pero durante ese tiempo mientras el servidor procesaba la solicitud, nada detendría al usuario de enviar una segunda solicitud, y la acción, desafortunadamente, no fue idempotente. Por lo tanto, el usuario puede hacer clic dos veces, el servidor responde dos veces y luego avanzar dos pasos, en lugar de uno :(. Lo arreglé refactorizando mi código para que el manejo del éxito sea idempotente.
- ¿Los campos de arranque de codificación obstaculizan el desarrollo de desarrolladores sin experiencia previa en CS?
- ¿Qué otros protocolos existen para comunicarse por Internet? ¿Hay alguno no asociado con WWW?
- ¿Es mejor aprender desarrollo web a través de tutoriales de youtube (newboston) o mediante MOOC como cs50?
- Cómo mostrar dos div en HTML en línea recta
- ¿Dónde puedo codificar sitios web gratis?