He estado investigando el nuevo objeto (ish) diferido en jQuery y tropecé con este artículo del sitio web here.jquery diferir y promesas con getScript
En el artículo hay un código diseñado para almacenar en caché las secuencias de comandos para que no se soliciten más de una vez.
var cachedScriptPromises = {};
$.cachedGetScript = function(url, callback) {
if (!cachedScriptPromises[ url ]) {
cachedScriptPromises[ url ] = $.Deferred(function(defer) {
$.getScript(url).then(defer.resolve, defer.reject);
}).promise();
}
return cachedScriptPromises[ url ].done(callback);
};
// You would then call it like thus.
$.cachedGetScript(url).then(successCallback, errorCallback);
Lo que esto se parecía a mí fue una manera de asegurar que la secuencia de comandos sólo va a ejecutar si su $.getScript()
fue exitosa.
Por lo que mis experimentos han pasado, la devolución de llamada de error nunca se llama, incluso si proporciono una url incorrecta.
¿He olvidado algo obvio o el código de la muestra es incorrecto?
Nota: Habría hecho esta pregunta en el sitio, pero el sistema de comentarios no funcionó. : -S
Esa es una lástima. Gracias por la visión. –
que bien podría depender de si '.getScript' permite ambos etiquetas script [CORS] (http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing) y de inyección. Incluso este último podría ser capaz de soportar diferidos, pero si lo hace o no, no sé. – hippietrail
@lonesomeday, ¿está seguro de que para la solicitud local se ejecutará a través de ajax? si es así, ¿por qué cuando se llama a $ .ajax para un script local, solo devuelve los datos pero no los ejecuta? – adardesign