jQuery usa su propio objeto Deferred
para esto. El código apropiado de jQuery prueba que se ejecuta en orden:
Cuando se llama a .ready
, se añade la función para la readyList
:
readyList.done(fn);
cuando el DOM está listo, se ejecuta esta función:
readyList.resolveWith(document, [ jQuery ]);
La función resolveWith
contiene el código que ejecuta las funciones añadidas como las devoluciones de llamada:
while(callbacks[ 0 ]) {
callbacks.shift().apply(context, args);
}
Como puede ver, las funciones de devolución de llamada son shift
ed (aparecieron desde el comienzo de la matriz de devolución de llamada (es decir, readyList
)), por lo que la primera se ejecuta antes que la segunda.
Buen trabajo Felix. Solo estaba viendo esa parte del código descomprimido tratando de descubrir cómo explicarlo ... –
Gracias por la gran respuesta – babonk