我有一个backbone.js项目。我在里面使用jquery $ get函数。我正在改变get中定义的变量的值。但是当我在外面做console.log(cityValue)时,我看到了旧的价值。你可以帮帮我吗?我期待着你的想法。
示例代码;
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;
},
答案 0 :(得分:1)
jQuery的get正在执行异步请求 - 这意味着在function(data) { ... }
的网络请求完成后将执行回调Target/action/city
。不在回调内部的其余代码将在不等待网络请求完成的情况下执行。
基本上,console.log(cityValue);
会在cityValue = data.name;
之前运行,因此您会看到旧值。
尝试将console.log(cityValue);
置于回调函数中。