Доступ к переменной внутренней функции javascript снаружи
Вот мой код Мне нужно получить доступ к внутренней переменной функции во внешней функции
var json = {}, state, response;
readRequestValues();
var xhr = new XMLHttpRequest();
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange=function(){
if(xhr.readyState == 4){
json.state = xhr.readyState;
json.response = xhr.responseText;
log.info(">>>>>>>>>>>>>>>"+json.state+">>>>>"+json.response);
var retValue=JSON.stringify(json);
log.info(">>> THIS IS RESULT >>>"+retValue);
}
}
xhr.open("GET", strBackend, true);//async=true
xhr.send();
log.info(">>> HERE I NEED TO ACCESS retValue >>>"+retValue);
Спасибо
2 ответа
Решение
Ты не можешь Это еще не получено здесь.
Вы должны вызвать любой код, когда мы его получим:
var json = {}, state, response;
readRequestValues();
var xhr = new XMLHttpRequest();
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange=function(){
if(xhr.readyState == 4){
json.state = xhr.readyState;
json.response = xhr.responseText;
log.info(">>>>>>>>>>>>>>>"+json.state+">>>>>"+json.response);
var retValue=JSON.stringify(json);
log.info(">>> THIS IS RESULT >>>"+retValue);
logValue(retValue); // here we call logger
}
}
xhr.open("GET", strBackend, true);//async=true
xhr.send();
function logValue(val) {
log.info(">>> HERE I NEED TO ACCESS retValue >>>"+val);
}
Речь идет не о внутренних и внешних функциях, а о синхронных и асинхронных функциях. onreadystatechange
обратные вызовы являются асинхронными, поэтому вы должны вызвать функцию, которая использует полученные данные внутри обратного вызова. В противном случае у вас все равно нет доступа к нему.
Последняя строка в вашем коде (log.info(...)
) всегда будет выполняться до получения данных внутри обратного вызова.