Javascript 在函数外部访问函数中定义的变量
我有一个backbone.js项目。我在内部使用jquery$get函数。我正在更改上面在get中定义的变量的值。但是当我在外面做console.log(cityValue)时,我看到了旧的值。你能帮我吗?我期待着您的意见 样本代码Javascript 在函数外部访问函数中定义的变量,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个backbone.js项目。我在内部使用jquery$get函数。我正在更改上面在get中定义的变量的值。但是当我在外面做console.log(cityValue)时,我看到了旧的值。你能帮我吗?我期待着您的意见 样本代码 getFormattedAddress1: function () { var postalCodeValue = this.model.get(this.postalCodeField); var stree
getFormattedAddress1: function () {
var postalCodeValue = this.model.get(this.postalCodeField);
var streetValue = this.model.get(this.streetField);
var cityValue = this.model.get(this.cityField);
var stateValue = this.model.get(this.stateField);
var countryValue = this.model.get(this.countryField);
$.get("Target/action/city", { id : cityValue },function(data){
cityValue = data.name;
});
console.log(cityValue);
var html = '';
if (streetValue) {
html += streetValue;
}
if (cityValue || stateValue || postalCodeValue) {
if (html != '') {
html += '\n';
}
if (cityValue) {
html += cityValue;
}
if (stateValue) {
if (cityValue) {
html += ', ';
}
html += stateValue;
}
if (postalCodeValue) {
if (cityValue || stateValue) {
html += ' ';
}
html += postalCodeValue;
}
}
if (countryValue) {
if (html != '') {
html += '\n';
}
html += countryValue;
}
return html;
},
jQuery的get正在执行一个异步请求——这意味着对
Target/action/city
的网络请求完成后,将执行回调function(data){…}
。回调中未包含的其余代码将在不等待网络请求完成的情况下执行
所以基本上,console.log(cityValue)代码>在cityValue=data.name之前运行代码>因此您看到的是旧值
尝试放置console.log(cityValue)代码>在回调函数中。$.get()
是异步的。甚至在get请求完成之前,您就已经在控制台中记录了该变量。尝试执行依赖于$.get().done()
中的cityValue
的代码。没用,但你看。在我的代码中,它们都只在一个函数中。它们都在一个函数中并不重要(从技术上讲,您有两个函数:getFormattedAddress1
和$.get
回调)$.get
是异步的,因此在执行$.get
之后的代码之前,不会执行其回调。你必须把它翻过来并使用回调。不,我不想在里面使用它。Console.log(cityValue)就是用来测试的。