Inmediatamente después de que mi script esté cargado, estoy haciendo una solicitud de Ajax para obtener algunas traducciones. Esto siempre debe regresar después de que el documento esté listo, ya que estoy cargando mis scripts en la parte inferior de la página, pero aún tengo curiosidad de si sería posible obtener un Deferred Object en el estado listo para documentos.¿Puedo obtener un jQuery aplazado en document.ready()?
De esa manera, sería posible asegurarse de que tanto el documento esté listo como la llamada Ajax devuelta con éxito antes de hacer cualquier otra cosa, p. de esta manera:
$.when($.ajax('translations'), document.ready())
.then(function(){
// Start doing stuff here
});
Gracias, sencillo y directo. Eso probablemente también funcione con una variable global o algo similar. – Daff
@Daff, absolutamente.Personalmente prefiero usar 'data()' en lugar de una variable global porque es más flexible y evita contaminar el espacio de nombres global. –
nota pedante. No hay razón para almacenar la variable en absoluto. Solo lo necesita durante la fase de configuración, por lo tanto, use scope de cierre: '(function() {var diferido = new $. Diferido(); $ (function() {deferred.resolve();}); $ .when ($. ajax ('foo'), diferido) .then (function() {});})(); '... Si usa telescopios locales, no es necesario almacenarlos, solo deje que los cierres lo vinculen por usted. – ircmaxell