Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从回调函数访问局部变量_Javascript - Fatal编程技术网

Javascript 从回调函数访问局部变量

Javascript 从回调函数访问局部变量,javascript,Javascript,我试图用回调函数返回的数据更新函数中的局部变量。但看起来回调函数无法访问它 以下是我的工作内容: this.renderUI = function(res) { var connected = (res.user != null && res.user.isConnected); if(connected) { $j('#jive-modal-invite').trigger('close'); var contactsData = gi

我试图用回调函数返回的数据更新函数中的局部变量。但看起来回调函数无法访问它

以下是我的工作内容:

this.renderUI = function(res) {
    var connected = (res.user != null && res.user.isConnected);
    if(connected) {
      $j('#jive-modal-invite').trigger('close'); 
      var contactsData = gigya.socialize.getContacts({callback: getContacts_callback });
      console.log(contactsData);  
    }else {
      console.log('openid disconnected');
    }   
  };

  function getContacts_callback(response) {
    return response;
  }
console.log(contactsData)在回调完成之前执行。请尝试以下操作:

  gigya.socialize.getContacts({callback: function(response){
    contactsData['contacts'] = response;
    console.log(contactsData); 
  } }); 
console.log(contactsData)在回调完成之前执行。请尝试以下操作:

  gigya.socialize.getContacts({callback: function(response){
    contactsData['contacts'] = response;
    console.log(contactsData); 
  } }); 

回调是异步的,所以它不知道局部变量。我在这里遗漏了什么吗?为什么您的回调是这样的:
gigya.socialize.getContacts({callback:function(response){
而不是
gigya.socialize.getContacts(function(response){
?如果
getContacts
是异步的,那么您就不能(也不应该)把日志语句(以及访问
contactsData
的所有其他内容)放入在callback@Bergi我也不能从回调中访问全局变量。这是一种已知的行为吗?@drecute:当然可以,如果它们真的是全局的。回调是异步的,所以它不知道局部变量。我在这里遗漏了什么吗?为什么你的回调像:
gigya.socialize.getContacts({callback:function)(response){
而不是
gigya.socialize.getContacts(函数(response){
?如果
getContacts
是异步的,那么您就不能(也不应该)将日志语句(以及其他所有内容)放入访问
contactsData
)在callback@Bergi我也不能从回调中访问全局变量。这是一种已知的行为吗?@drecute:如果它们是真正的全局变量,当然可以。我需要回调范围之外的
contactsData
从回调范围内调用函数如何?我需要回调范围之外的
contactsData
如何从回调函数内部调用函数?