我无法将变量更新到全局范围。我已经声明了一个变量 state ,然后当一个函数完成时,我将返回该变量。所有这一切。但是,我还有另一个函数在异步地运行,以等待var更新,但是它从未获得更新的 state 值,并且会无限期地循环“ notReady”。我期望“返回状态”可以更新全局范围内的变量,但事实并非如此。如何获取更新的全局 state 变量以在以前触发的函数中进行更新?
var state = 'notReady';
function do(state){
// long/heavy webGL function
state = 'ready'
return state; //state successfully changes to 'ready'
};
$.when( do(state) ).then(function(state) {
console.log(state); // this logs 'ready' successfully
return state;
});
function previousFiredFunction(){
function waitForState(){
if(state === 'ready'){
// do something when ready (this is never 'ready')
} else {
setTimeout(waitForState, 200);
}
}
waitForState();
}
previousFiredFunction();
答案 0 :(得分:1)
在Dim guiSettings = XElement.Load(_localAppDataFilePath & "\Frontier Developments\Elite Dangerous\Options\Graphics\GraphicsConfigurationOverride.xml")
target = guiSettings.Element("GUIColour").Elements("Default").[Single]()
r = target.Element("MatrixRed").Value
函数中,您有一个函数自变量,其名称与全局变量(<Feature>
)同名。这将掩盖全局变量。并且所有“本地”变量(例如字符串和数字)均按值而不是按引用传递。
简单的解决方法,只是完全失去了论据。然后,您将使用全局变量。
do
顺便说一句,令我惊讶的是您完全可以运行此代码,因为state
是keyword in JavaScript。我不得不更改名称才能运行您的代码。