Javascript的执行顺序-为什么会这样?
我完全搞不懂为什么Javascript会以这种方式做某些事情,或者可能是我编错了什么。但是,为什么在回调完成之前执行$.getJSON之后的代码呢Javascript的执行顺序-为什么会这样?,javascript,jquery,Javascript,Jquery,我完全搞不懂为什么Javascript会以这种方式做某些事情,或者可能是我编错了什么。但是,为什么在回调完成之前执行$.getJSON之后的代码呢 window.ratingCallback = function(data){ if(data[0].code == 3){ ratingHTML = buildHTML(0); console.log('a'+ratingHTML); return; } r
window.ratingCallback = function(data){
if(data[0].code == 3){
ratingHTML = buildHTML(0);
console.log('a'+ratingHTML);
return;
}
ratingHTML = buildHTML(data[0].rating);
console.log('b'+ratingHTML);
return;
};
function buildHTML(pageRating){
for(counter = 1; counter <= 5; counter++){
if(counter == pageRating){
ratingHTML += '<input name="star1" type="radio" class="star" value="'+counter+'" checked="checked"/>';
} else {
ratingHTML += '<input name="star1" type="radio" class="star" value="'+counter+'"/>';
}
}
return ratingHTML;
}
$.getJSON("https://domain.com/"+data+"?jsoncallback=?");
console.log(ratingHTML+"WHY DOES THIS EXECUTE FIRST AND NOT AFTER THE CALLBACK SINCE IT IS PLACED AFTER getJSON????");
window.ratingCallback=函数(数据){
如果(数据[0]。代码==3){
ratingHTML=buildHTML(0);
console.log('a'+ratingHTML);
回来
}
ratingHTML=buildHTML(数据[0]。评级);
console.log('b'+ratingHTML);
回来
};
函数buildHTML(页面分级){
对于(counter=1;counter,getJSON()调用是异步的
文档()中甚至提到了这一点:
注意:请记住,后面的行
此函数将在之前执行
回拨
getJSON()调用是异步的
文档()中甚至提到了这一点:
注意:请记住,后面的行
此函数将在之前执行
回拨
getJSON是一种异步方法,基本上意味着当您调用它时,它会立即返回到主程序流,因此它是“非阻塞的”如果希望console.log在getJSON完成后进行日志记录,则应将其放入回调方法。或者,如果不希望遵循回调模式,并且希望调用是同步的,请使用ajax调用并将async选项设置为false。不过,请注意,这将导致浏览器阻塞,或者在获取dat时出现冻结a、 getJSON是一种异步方法,基本上意味着当您调用它时,它会立即返回到主程序流。因此它是“非阻塞的”如果希望console.log在getJSON完成后进行日志记录,则应将其放入回调方法。或者,如果不希望遵循回调模式,并且希望调用是同步的,请使用ajax调用并将async选项设置为false。不过,请注意,这将导致浏览器阻塞,或者在获取dat时出现冻结a、 AJAX请求通常是异步完成的(AJAX中的第一个a)。这意味着请求将启动,然后它将继续执行它正在执行的代码,而不等待请求返回
如果您想让它等待,可以将请求设置为同步模式,但我不确定在jquery中如何做到这一点。AJAX请求通常是异步完成的(AJAX中的第一个A)。这意味着请求将启动,然后它将继续执行它正在执行的代码,而不等待请求返回
如果您想让它等待,您可以将请求设置为同步模式,但我不知道如何在jquery中做到这一点