gpt4 book ai didi

javascript - 在函数外部访问函数中定义的变量

转载 作者:行者123 更新时间:2023-12-03 02:14:16 27 4
gpt4 key购买 nike

我有一个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;
},

最佳答案

jQuery 的 get 正在执行异步请求 - 这意味着回调 function(data) { ... } 将在向 Target/action/city 发出网络请求后执行> 完成。不在回调内的其余代码将执行,而无需等待网络请求完成。

基本上,console.log(cityValue);cityValue = data.name; 之前运行,因此您看到的是旧值。

尝试将 console.log(cityValue); 放入回调函数中。

关于javascript - 在函数外部访问函数中定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com