以下是我的代码:
$(document).on("click",".ball_link", function makeDiv(){
function fetchLevels(){
$.getJSON('fetch_level.php',{level: clicked_ball}, function(data) {
$.each(data, function(i,name) {
alert(name.level_id); //Line 1
});
});
}
fetchLevels();
alert(name.level_id); //Line 2
while (//some condition){
alert("hi 2"); //Line 3
}
});
所需的执行顺序:
1号线
第2行(与第1行的值相同)
3号线
实际执行顺序:
第2行(值:未定义)
3号线
第1行(正确值)
如何控制这些行的执行顺序以获得具有正确值的必需行?
最佳答案
由于ajax调用是异步的,因此您可以在成功回调中移动所有代码,也可以使用延迟的对象来处理正确的执行顺序
function fetchLevels() {
$.getJSON('fetch_level.php', { level: clicked_ball })
.done(function(data) {
$.each(data, function(i,name) {
alert(name.level_id); //Line 1
});
alert(name.level_id); //Line 2
while (//some condition) {
alert("hi 2"); //Line 3
}
});
}
fetchLevels();
或者您可以使用此
function fetchLevels() {
return $.getJSON('fetch_level.php', { level: clicked_ball })
}
$.when(fetchLevels()).done(function(data) {
$.each(data, function(i,name) {
alert(name.level_id); //Line 1
});
alert(name.level_id); //Line 2
while (//some condition) {
alert("hi 2"); //Line 3
}
});
})