Javascript执行顺序 - 它是怎么做到的?

1 javascript jquery

我很遗憾为什么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????");
Run Code Online (Sandbox Code Playgroud)

我希望它与众不同的原因是我需要将ratingHTML作为全局变量.

我知道当远程服务器给出响应时会调用回调,但是我可以让其余的脚本等待进一步执行吗?不将所有代码放在回调函数或任何函数中?

非常感谢你!

M4N*_*M4N 7

getJSON()调用是异步的.

它甚至在文档中提到过(http://docs.jquery.com/Ajax/jQuery.getJSON):

注意:请记住,此函数之后的行将在回调之前执行.