Javascript JS中jQuery函数的过程顺序

Javascript JS中jQuery函数的过程顺序,javascript,jquery,Javascript,Jquery,可能重复: 尝试执行一个包含jQuery函数(getJson())的函数,但当我运行它时,我的javascript函数会在调用getJson()之前返回。我想知道为什么没有按顺序调用getJson,以及如何修复它 function getUsers(screen_name){ user_list=[] var id_list =[] $.getJSON(url, function(json) { //do stuff here, I have b

可能重复:

尝试执行一个包含jQuery函数(
getJson()
)的函数,但当我运行它时,我的javascript函数会在调用
getJson()
之前返回。我想知道为什么没有按顺序调用getJson,以及如何修复它

function getUsers(screen_name){
user_list=[]  
var id_list =[]

    $.getJSON(url,  function(json)
    {   
        //do stuff here, I have breakpoint #1 here
    });

    return user_list //breakpoint #2 is here
}
从控制台运行时:
getUsers('myUser')
它首先到达断点2,然后到达断点1。

getJSON()
默认情况下是异步的。这意味着调用它只会启动操作,其余javascript将继续运行。稍后,异步操作完成,并使用返回的数据调用成功处理程序

任何需要访问返回数据的代码必须位于成功处理程序中,或者位于从成功处理程序调用的函数中。您不能使用异步函数,只返回
用户列表

相反,您必须重新考虑代码的组织方式,以便使用
用户列表的代码位于成功处理程序中或从成功处理程序调用


getJSON()
可以设置为同步,但这通常是一种不好的javascript编程方式,因为它会在网络调用期间锁定浏览器,这通常是一种不好的用户体验。相反,如果您正确地编写代码来处理它的同步性,那么浏览器在ajax调用的整个过程中都会保持完全的交互,但是它提出了一个Ajax请求。这个问题已经有几十个版本在这里被问到和回答了。但是我找不到任何版本。我正在删除它我从来不会在不搜索几分钟的情况下问任何问题,而且我通常会找到我问题的精确副本。在这种情况下,我甚至不知道我在寻找什么词。是的,搜索“async getjson return”或其他东西很快就能得到答案,但我不知道我在搜索async这个词,它变成了关键词。谢谢你。