2013-02-20 79 views
0

我有一段javascript代码,我通过ajax调用来检索员工列表。全局变量保持为空

var employees_json = ''; 

Ajax.callbackAsync('getEmployees', ['2627016'], 
    function(response){ 
     employees_json = response; 

     console.log('this: '+ employees_json); 
    }, 
    function(error){ 
     alert('Error while retrieving employees: '+ error); 
    } 
); 

console.log('that: '+ employees_json); 

(2627016是branch_id)

输出在控制台上:

this: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] 
that: 

为什么employees_json空之外的Ajax调用?
或者我做了一个我没有看到的类型!?!

+5

因为在处理异步代码时,'外部'并不意味着'之后'。 – raina77ow 2013-02-20 15:08:39

+1

记录的顺序与您发布的方式完全相同吗? – techfoobar 2013-02-20 15:09:39

+0

不,我有几个console.logs在我的代码,这是在底部。 – nhalink 2013-02-20 15:12:09

回答

0

您的console.log在函数(响应)之前执行。

log是不是这样? : 即: 这:[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object Object ],[object Object],[object Object],[object Object]

javascript是1个线程,但您永远不知道回调函数何时运行。 所以你必须调整你的代码。

+0

我已经移动了响应函数中响应的代码。 – nhalink 2013-02-20 16:47:45