-1

可能重复:
Ajax 中的异步是什么意思?
jQuery ajax 返回值

尝试执行一个包含 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。

4

1 回答 1

2

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

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

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

getJSON()可以设置为同步,但这通常是用 javascript 编程的一种不好的方式,因为它会在网络调用期间锁定浏览器,这通常是一种糟糕的用户体验。相反,如果您正确编写代码来处理它是异步的,那么浏览器将在 ajax 调用的整个持续时间内保持完全交互。

于 2012-07-26T20:57:20.877 回答