Je suis conscient que lors du codage d'une extension, il est impossible de retarder un appel de fonction à l'exception de l'utilisation d'un appel setTimeout, mais voici ce que j'essaie d'obtenir dans un plugin je développe pour Firefox (ce qui est pas javascript intégré dans une page Web par la voie):Javascript dans Firefox Plugin: Retarder dans la boucle
for (var i = 0; i < t.length; i ++) {
//Load a URL from an array //On document complete, get some data
}
L'idée est simple. J'ai un tableau d'URL que je veux analyser et extraire des données sur. Chacune de ces URL prend du temps à charger. Donc, si j'essaie d'obtenir des données de la page en cours sans attendre le chargement de la page, j'obtiendrai une erreur. Maintenant, la seule façon de le faire que je sache, est la suivante:
firstFunction: function() {
//Load the first url setTimeout("secondfunction", 5000);
}
secondFunction: function() {
//Load the second url setTimeout("thirdfunction", 5000);
}
Et ainsi de suite ... Je sais que c'est évidemment faux .. Je me demandais comment les gens y parviennent en javascript ...
EDIT: Désolé de ne pas être plus de détails ...
S'il vous plaît ajouter un peu plus d'info - Je suis peut-être manquant, mais je ne comprends pas non plus ce que vous essayez de faire ou ce que le problème serait alors. –
Vous pouvez masquer cette async. style de programmation plus, mais c'est à peu près tout. –
Vous mêlez des questions dans votre question. Il semble que vous demandiez une façon plus agréable d'écrire du code que setTimeouts (pour que votre logique ne soit pas dispersée entre plusieurs fonctions). Puis, dans un commentaire à une réponse, vous indiquez que la raison pour laquelle vous ne voulez pas utiliser setTimeout est que c'est incorrect. Si c'est le cas, consultez la réponse de James - vous devriez utiliser les rappels appropriés (qui ne sont pas basés sur le temps, mais basés sur les événements). – Nickolay