Tome un vistazo a this JsFiddle:¿Cómo reducir la frecuencia de tales errores en mi código?
var requests = [
$.ajax("http://search.twitter.com/search.json", { data: { q: 'ashishnjain' }, dataType: 'jsonp' })
.done(function() {console.log("request");}),
$.ajax("http://search.twitter.com/search.json", { data: { q: 'ashishnjain' }, dataType: 'jsonp' })
.done(function() {console.log("request");})
];
$.when(requests).done(console.log("alldone"));
El resultado esperado es: request request alldone
, pero en realidad esto imprime alldone request request
.
En realidad, hay dos errores en este código (lo dejo como ejercicio si disfrutas de ese tipo de cosas), pero finalmente creo que esto ocurre porque JavaScript y jQuery son extremadamente indulgentes cuando se dan argumentos que no tienen sentido alguno. En este entorno, lo "correcto" parece ser "hacer algo o nada, ¡simplemente no arrojar un error!".
En vista de que este código pasa JSLint, y sólo me ha costado un par de horas de depuración (el código real era, por supuesto, algunos órdenes de magnitud más complejo), me pregunto qué más puedo hacer para reducir el tiempo perdido en tal indulgencia injustificada. Este no es un ejemplo aislado; parece suceder una y otra vez ¿Alguna sugerencia?
Según usted, los argumentos no tienen sentido. De acuerdo con el motor, estoy seguro de que lo hacen. ¿Qué errores esperarías de tus "errores"? Algo así como "argumento inválido"? – bzlm
@bzlm Me encantaría discutir eso, pero me temo que esto desviará la pregunta. No puedo cambiar JavaScript, y no puedo cambiar jQuery (mucho), así que me pregunto cómo evitar cosas como esta. –
Siento tu dolor. Es increíble lo popular que es este estilo de programación propenso a errores. Apenas pasa un día sin que tenga que navegar a través de mi propio código JS y mirar cada detalle de la sintaxis más sutil, para encontrar errores que un compilador adecuado encontraría y marcaría en una fracción de segundo. No sé cómo otras personas disfrutan de esta experiencia frustrante, pero como lo hagan, no pueden ser muy productivos de esa manera. – Timwi