Oli*_*ver 0 javascript jquery scope
Latey我遇到了一些奇怪的javascript行为的麻烦.我想做这样的事情:
var lang = null;
function getLang() {
if (browserLanguageIsGerman) {
lang = 'de';
}
else {
lang = 'en';
}
// alert(lang) shows "de"
$('#someID').load(someValidUrl, null,
function(response, status, xhr) {
if(languageSettingsOnFacebookIsGerman) {
lang = 'de';
}
else {
lang = 'en';
}
// alert(lang) show "en"
);
// alert(lang) shows "de"
}
Run Code Online (Sandbox Code Playgroud)
第一个和第二个警报显示已过期的值1)"de"2)"en".第三个警报显示"de"但不应该是"en"?!此外,第三个警报后会弹出第二个警报.
有人可以在我脑海中明显出现错误吗?:)
提前致谢!
这不是范围问题.该load方法是异步的.第三个alert是在传递回调之前执行的load.将依赖于该异步调用结果的任何代码移动到回调中.
或者,您可以查看jQuery延迟对象API.请注意,如果您要使用延迟对象API,则需要更改load调用jQuery.get或调用jQuery.ajax,因为.load返回一个jQuery实例,该实例未实现Promise接口.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |