欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)異步循環(huán)實(shí)現(xiàn)代碼

 更新時(shí)間:2016年02月16日 14:47:44   投稿:mdxy-dxy  
這篇文章主要介紹了js實(shí)現(xiàn)異步循環(huán)實(shí)現(xiàn)代碼,需要的朋友可以參考下

問(wèn)題
實(shí)現(xiàn)異步循環(huán)時(shí),你可能會(huì)遇到問(wèn)題。

讓我們?cè)囍鴮?xiě)一個(gè)異步方法,一次循環(huán)打印一次循環(huán)的索引值。

<script>
for(var i = 0; i < 5; i++){
setTimeout(function(){
document.writeln(i);document.writeln("<br />");
},1000);
}
</script>

如上程序的輸出為:

5
5
5
5
5

原因

每次時(shí)間結(jié)束(timeout)都指向原始的i,而并非它的拷貝。所以,for循環(huán)使i增長(zhǎng)到5,之后timeout運(yùn)行并調(diào)用了當(dāng)前i的值(也就是5)。

解決方法

有幾個(gè)不同的方式可以拷貝i。最普通且常用方法是通過(guò)聲明函數(shù)來(lái)建立一個(gè)閉包,并將i傳給此函數(shù)。我們這里使用了自調(diào)用函數(shù)。

運(yùn)行代碼

<script>
for(var i = 0; i < 5; i++){
(function(num){
setTimeout(function(){
document.writeln(num);document.writeln("<br />");
},1000);
})(i);
}
</script>

輸出

0
1
2
3
4

相關(guān)文章

最新評(píng)論