我很遗憾为什么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 += ''; } else { ratingHTML += ''; } } 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????");
我希望它与众不同的原因是我需要将ratingHTML作为全局变量.
我知道当远程服务器给出响应时会调用回调,但是我可以让其余的脚本等待进一步执行吗?不将所有代码放在回调函数或任何函数中?
非常感谢你!
冰
getJSON()调用是异步的.
它甚至在文档中提到过(http://docs.jquery.com/Ajax/jQuery.getJSON):
注意:请记住,此函数之后的行将在回调之前执行.