Callback exécuter avant le script chargé

Fermé
math 2000 Messages postés 2605 Date d'inscription dimanche 9 septembre 2007 Statut Membre Dernière intervention 7 mai 2016 - Modifié par math 2000 le 26/09/2014 à 12:37
math 2000 Messages postés 2605 Date d'inscription dimanche 9 septembre 2007 Statut Membre Dernière intervention 7 mai 2016 - 26 sept. 2014 à 16:11
Bonjour,
j'ai besoins de charger des script js depuis un autre script js mais malgré la fonction que j'ai crée pour que les script se charge dans l'ordre.
les scripts se charge dans un ordre aléatoire que je détecte grâce à des alert() au sein de chaque js.

cela viens du fait je pense que le callback se declenche trop tot.
le callback se declenche avant tous les alert des mes scripts.


voici mon code très simple

MultipleGetScript(['tableauDeModele.js','jquery.cookie.js','jquery-ui.js','modele2.js','modeleCreator.js','modeleCreator.js','modeleCreator.js','ia.js'],function(){alert("test")});



function MultipleGetScript(tab,callback)
{
var i=0;
function getScript2(i)
{
if ( i< tab.length-1)
{
$.getScript(tab[i],getScript2(i+1));
}
else
{
$.getScript(tab[i],callback);
}
}
getScript2(i);
}


j'ai essayer une autre manière et là mon message "tout script fait" apparaît avant les alert() de ces même scripts
le concept :j'ai un tableau qui pour chaque script enregistre "2" pour le script est non traité et "1" il est traité quand ils sont tous à un ça affiche le message

ce script charge les différents scripts en parallèle ce qui m'interesse c'est jsute que le callback s'execute après.

function MultipleGetScript(tab,callback)
{
var tab2=[];
for( var o =0;o<tab.length;o++)
{
tab2[o]=2;
}

for( var o =0;o<tab.length;o++)
{
$.getScript(tab[o],scriptFait(o));
}

function scriptFait(o)
{
tab2[o]=1
mult=tab2[0];
for( var o =1;o<tab.length;o++)
{
mult*=tab2[o];
}
if (mult==1)
alert("tout script fait");
}

}


Bien sur mon but n'est pas d'afficher des alert mais d'éviter l'erreur de fonction indefinit dans le callback d'une fonction déclarer dans un sript à chargé
merci

1 réponse

math 2000 Messages postés 2605 Date d'inscription dimanche 9 septembre 2007 Statut Membre Dernière intervention 7 mai 2016 404
Modifié par math 2000 le 26/09/2014 à 16:19
j'avais oublié de mettre le callback dans une fonction *
ce qui donne pour les deux versions combiné

function MultipleGetScript(tab,callback,sync)
{
if (!sync)
{
var tab2=[];
var cpt=0;
for( var o =0;o<tab.length;o++)
{
tab2[o]=2;
}
for( var o =0;o<tab.length;o++)
{
$.getScript(tab[o],function(){scriptFait(o)});
}
function scriptFait(o)
{
cpt++;
if (cpt==tab.length)
{
callback();
}
}
}
else
{
var i=0;
function getScript2(i)
{
if ( i< tab.length-1)
{
$.getScript(tab[i],function(){getScript2(i+1)});
}
else
{
$.getScript(tab[i],callback);
}
}
getScript2(i);
}
}
0