var checkduplicates = new Array();
drawOne(i);
//console.log(checkduplicates)
function drawOne(i)
{
//randomly select one photo
var picinfo = photos[Math.floor(Math.random()*photos.length)];
//check duplicates pic, if duplicates exist, get another one
while(checkduplicates.indexOf(picinfo)!=-1||picinfo.title.length>10)
{
picinfo = photos[Math.floor(Math.random()*photos.length)];
}
checkduplicates.push(picinfo);
var ctx = document.getElementsByClassName("canvas")[i].getContext('2d');
var img = new Image();
//get the pic URL
img.src = "http://farm" + picinfo.farm + ".static.flickr.com/"
+ picinfo.server + "/" + picinfo.id + "_" + picinfo.secret + "_m.jpg";
img.onload = function()
{
// Draw pieces
ctx.drawImage(img,0,0,132,150);
ctx.drawImage(frame,0,0,133,152);
if(picinfo.title=="")
$("#"+i).append("Untitled");
else
$("#"+i).append(picinfo.title);
i++;
if (i != canvaslength)
{
drawOne(i);
}
}
Ce que je fais ici est que je suis générer dynamiquement des images pour remplir 16 toile et certaines personnes ont dit que j'utilise récursion asynchrone que je DonT même remarque. J'ai essayé d'utiliser la boucle au lieu de la récursivité mais en quelque sorte fini par obtenir exception que je ne sais pas comment réparer. Donc je m'en tiens à la récursivité. Cependant, mon problème est que comment je peux détecter la fin de la récursion comme la ligne commentée montre qu'il n'y a qu'un seul élément dans le tableau.détecter la fin de la récursivité asynchrone
//console.log(checkduplicates)
et l'explication que je suis arrivé est que je comprends, le console.log commenté est exécuté avant un groupe de récursion de la fonction drawOne terminé Mais ce que je voulais était que je voulais les 16 images complètes pour être à pleine charge puis sélectionnez-les afin que je puisse faire quelque chose avec eux. Par conséquent, la question est de savoir comment je peux détecter la fin de la récursion. Je vous remercie. Vous êtes invités à ignorer la plupart de mes codes et à regarder la partie récursive.