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
如何从回调函数内部调用函数?