Я пытаюсь использовать переменную x, определенную внутри функции P, значение которой я пытаюсь установить в другой функции. Он всегда приходит неопределенным.Javascript Closure -Local variable inested function
Я попробовал применить свой разум, чтобы использовать закрытие, но это просто сходит с моей головы. Это не дает мне строку, а не объект.
Логика следующая.
function P(i){
var x;
if(i!=null){
//this pulls the data correctly and i could see it in network tab response.
var dataFromQuery=widgets.DATA.create({
url:"abc/cde",
queryTemplate :"/query"+i+ "?"
});
//we query the data and set the value as per the logic.
dataFromQuery.query(function(data){
if(data[0].name){
x=data[0].name; // this stays undefined , and i understand this is a new local variable x.Also the value is here and comes fine here so no issues with the data but i want to set it to the variable defined outside as x.
}
})
}
else{
x="somehardcode";
}
};
Я попытался сохранение результата dataFromQuery.query (функция (данные) {к вар, а затем установить его в й, но он снова приходит как объект, который мне нужен как строка. Благодаря
dataFromQuery.query, вероятно, является асинхронным запросом AJAX. «x» не будет определяться до тех пор, пока не будет разрешен запрос. Если вы пытаетесь получить доступ к «x» до его разрешения, оно будет неопределенным. – Hoyen
На самом деле я попробовал распечатать значение x в console.log, который печатает значение, которое мне нужно. но за пределами этого блока скажите ниже, иначе я хочу увидеть его там, где он показывается undefined.So это означает, что это не проблема async? – NeverGiveUp161
Также область «x» видна только внутри этой функции P. – Hoyen