问题标签 [staleobjectstate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 线程 - 保证得到最后的结果
我有几个调用方法的线程。它看起来像这样:
但是,如果条件变化很快,我会得到很多陈旧的中间结果,因为我无法足够快地完成计算。我知道!我将代码修改为如下所示:
现在我不会费心去计算,除非我之前的计算完成了。在快速变化的情况下,我会有点落后,但不会超过我本来应该做的,而且我不会为了过时的结果而浪费我的时间做所有额外的工作。
然而,
一旦情况停止变化,我还是有点过时了,最后一个想调用 DoWork 的线程早已不复存在。有没有办法告诉线程:
javascript - 在函数内反应 useEffect 陈旧值
在以下情况下 ,如何更新simulationOn
函数内部变量的值:executeSimulation
通过外部代码更改应用this.state.simulationOn
程序 --> ... --> React 无状态组件 ( Robot
) 重新渲染 -->useEffect
使用新值调用钩子 -->executeSimulation
未使用simulationOn
.
在上面的示例中,simulationOn
永远不会更改为false
,即使使用更新的值调用 useEffect (我使用 console.log 检查)。我怀疑这是因为新的值simulationOn
永远不会传递给函数的范围executeSimulation
,但我不知道如何在函数内部传递新的钩子值executeSimulation
。