[英]Loop doesn't work as expected when $.get is called
我很難理解循環中的$ .get調用。 在下面的示例中,我在函數內調用$ .get(我正在$ .get上讀取的文件對於此問題無關緊要),並且似乎在所有第一個循環完成后才讀取了該文件。
我希望控制台顯示:
---
1
---
2
---
3
---
但是正在顯示
1
2
3
4
5
6
7
8
9
10
---(11)
你能告訴我為什么嗎?
http://jsfiddle.net/qh6zn514/1/
<Button id="clickme">Click me</button>
$("#clickme").click(function() {
for ($i=0;$i<=10;$i++)
{
readNumber();
console.log($i);
}
})
function readNumber () {
$.get ("file", function(txt) {
console.log ("---");
});
}
傳遞給$ .get的函數是異步執行的,這意味着它立即返回而無需等待get完成。 因此,循環真正快速地運行並記錄數字。 然后每個獲取請求完成並記錄-
如上所述,Ajax請求是異步的。 閱讀以上文章以獲得解釋。 不過,這是您的代碼可能的解決方案:
http://jsfiddle.net/qh6zn514/1/
$("#clickme").click(function() {
for ($i = 1; $i <= 10; $i++)
{
readNumber($i)
}
})
function readNumber ($i) {
$.get ("file", function(txt) {
console.log($i)
console.log ("---");
});
}
輸出:
1
---
2
---
3
---
4
---
5
---
6
---
7
---
8
---
9
---
10
---
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.