猿问

javascript中回调和递归并用的问题

varimge=newImage();
vararr=newArray(8);
varopp=0;
functiondigui(opp){
imge.src="这里在网上必须有一个图片的链接地址不然测试不出来";
imge.onload=function(){
opp++;
if(oppconsole.log("第一层"+opp);
digui(opp);
}
console.log(opp);
}
}
digui(opp);
我想知道输出为什么是0到7,按递归应该是7到0啊,有人说是回调的作用,有人解释下吗,不胜感激
qq_遁去的一_1
浏览 243回答 2
2回答

慕桂英3389331

varopp=0;functiondigui(opp){opp++;if(opp

牛魔王的故事

简单而言,就是你把实现递归的模式给改了,传统的实现是这样的>1开始>---2开始>------3开始>------3结束>---2结束>1结束而的你实现改成了>1开始>1结束>---2开始>---2结束>------3开始>------3结束为什么会成这个样,是因为onload这个事件的触发,onload事件触发是在加载图片完成后才执行的。也就是“1开始”后执行时并不会马上触发“2开始”的相关逻辑,而是要等待图片加载完成后,才会触发“2开始”,而这时在等待图片加载时,“1结束”部分已经执行完毕functiondigui(opp){//开始console.log(opp+'start');imge.src="这里在网上必须有一个图片的链接地址不然测试不出来";imge.onload=function(){opp++;if(opp
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答