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这个词,它变成了关键词。谢谢你。