Application du délai entre les itérations de javascript pour la boucle

Est-il possible d’appliquer un délai aux itérations successives d’un javascript for-loop en utilisant jQuery ou underscore? Sur ma page, une boucle est utilisée pour afficher les notifications de grondement lorsque les utilisateurs remplissent certaines conditions. S’il existe plusieurs conditions, je souhaite étaler les notifications de grossissement au lieu d’en afficher plusieurs simultanément. Voici la boucle en question:

var badge_arr = response.split("Earned badge:"); //Start at 1 so I'm not getting everything before the first badge for(i = 1; i < badge_arr.length; i++){ responseStr += badge_arr[i]; //Create growl notification //badge info echoed back will be of the form //Earned badge: name: description: imgSource var badge_info = badge_arr[i].split(':'); var title = 'NEW BADGE UNLOCKED'; var text = 'You just unlocked the badge '+badge_info[0]+': '+badge_info[1]; var img = badge_info[2]; createGrowl(title, text, img); } 

 for(i = 1; i < badge_arr.length; i++){ (function(i){ setTimeout(function(){ responseStr += badge_arr[i]; //Create growl notification //badge info echoed back will be of the form //Earned badge: name: description: imgSource var badge_info = badge_arr[i].split(':'); var title = 'NEW BADGE UNLOCKED'; var text = 'You just unlocked the badge '+badge_info[0] + ': '+badge_info[1]; var img = badge_info[2]; createGrowl(title, text, img); }, 1000 * i); }(i)); } 

EXEMPLE

Je préfère utiliser la fonction auto-invoquante qui reçoit un certain nombre d’itérations:

 (function loop(i) { setTimeout(function () { alert('hello world'); // your code if (--i) loop(i); // iteration counter }, 5000) // delay })(10); // iterations count