Доступ к переменной внутренней функции 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(...)) всегда будет выполняться до получения данных внутри обратного вызова.

Другие вопросы по тегам