Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript的执行顺序-为什么会这样?_Javascript_Jquery - Fatal编程技术网

Javascript的执行顺序-为什么会这样?

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

我完全搞不懂为什么Javascript会以这种方式做某些事情,或者可能是我编错了什么。但是,为什么在回调完成之前执行$.getJSON之后的代码呢

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中做到这一点