【发布时间】:2018-08-25 22:28:23
【问题描述】:
我在将变量更新到全局范围时遇到问题。我已经声明了一个变量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();
【问题讨论】:
-
typeof state === 'ready'这永远不会是真的,因为'ready'不是typeof的有效值。猜你的typeof不应该在那里? -
好的,谢谢。我忽略了这一点,是的,它不应该存在,但是当删除时,我仍然在其他控制台中获得旧状态,setTimeout 所在的位置,所以它仍然没有得到更新。 (编辑代码以删除 typeof)
标签: javascript jquery global-variables