雖然經常使用setInterval定時器方法,但沒有注意過它是否是異步或同步的問題,因為以前寫的關于setInterval的代碼,基本模式是這樣的:,是以在這種情況下是觀察不到異步和同步的問題的,直到有一次我寫了這樣的代碼:
setInterval(function(){//do something...},1000);
setInterval(function(){//do something...},1000);//do an other thing
。
我發現我的代碼并沒有如我剛開始預期的那樣先執行完setInterval中的代碼,最後再do an other thing,而是跳過setInterval後直接do an other thing。hin顯然這和我當時剛開始接觸ajax後遇到的問題(ajax也是異步的)一樣,是以setInterval是異步執行的。
測試代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<button onclick="changeValue();">change</button>
</body>
<script type="text/javascript" src="jquery-3.0.0.min.js"></script>
<script type="text/javascript">
var value = ;
$(function () {
var temp; //代碼A
var interval = setInterval(function () { //代碼B
console.log("interval執行,目前value=" + value);
if (value > ) {
temp = value;
clearInterval(interval); //終止循環
}
}, );
console.log("temp=" + temp); //代碼C
});
function changeValue() {
value++;
}
</script>
</html>
運作結果
參考:http://www.cnblogs.com/ppforever/p/4344912.html?tvd