2014-05-08 1 views
1

Je construis une application en utilisant Ember.js. Il y a une partie de l'administration du site Web qui nécessite l'utilisation de diverses bibliothèques JavaScript.Téléchargez plusieurs script js de manière asynchrone, puis exécutez-les dans l'ordre

Je souhaite télécharger ces bibliothèques uniquement lorsque l'itinéraire administratif du site est visité.

Je pensais que je pouvais faire quelque chose comme dans la réponse StackOverflow suivante:

https://stackoverflow.com/a/11803418/2014469

$.when(
    $.getScript("/mypath/myscript1.js"), 
    $.getScript("/mypath/myscript2.js"), 
    $.getScript("/mypath/myscript3.js"), 
    $.Deferred(function(deferred){ 
     $(deferred.resolve); 
    }) 
).done(function(){ 

    //place your code here, the scripts are all loaded 

}); 

Mais je suis nerveux au sujet de l'ordre d'exécution de ces fichiers.

Supposons que myscript2.js dépend de certaines fonctions de myscript1.js.

Est-ce myscript1.js charger (!) Et exécuté (!) avant myscript2.js?

Si ce n'est pas le cas, comment puis-je télécharger tous les fichiers de manière asynchrone, puis les exécuter dans l'ordre? Je pensais à enchaînant juste .then():

$.getScript("/mypath/myscript1.js") 
.then(function{$.getScript("/mypath/myscript2.js")}) 
.then(function{$.getScript("/mypath/myscript3.js")}) 

Mais cela attendre jusqu'à ce qu'on ait été téléchargé et exécuté avant qu'il ne commence même télécharger la prochaine - je voudrais télécharger tous en même temps, mais les exécuter commande.

Merci pour toute aide.

+2

http://requirejs.org/ – undefined

+0

J'ai cherché - mais je n'ai sérieusement besoin que de cela en un seul endroit sur mon site, et en surface, il ne semble pas nécessaire d'inclure une autre bibliothèque pour charger ces autres ... La version minifiée * est * seulement 14kb si ... Hmm ... –

+0

Ce que vous cherchez est appelé chaîne de promesses. Je privide un échantillon mais je suis actuellement sur ma cellule. –

Répondre

1

Vous aurez besoin d'un chargeur javascript qui gère les dépendances entre les scripts.

Si requirejs est trop grand pour vos besoins et vous ne prévoyez pas d'écrire vous-même, jetez un oeil à ces petites bibliothèques: http://microjs.com/#loader

Questions connexes