问题标签 [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.

0 投票
1 回答
58 浏览

c# - 线程 - 保证得到最后的结果

我有几个调用方法的线程。它看起来像这样:

但是,如果条件变化很快,我会得到很多陈旧的中间结果,因为我无法足够快地完成计算。我知道!我将代码修改为如下所示:

现在我不会费心去计算,除非我之前的计算完成了。在快速变化的情况下,我会有点落后,但不会超过我本来应该做的,而且我不会为了过时的结果而浪费我的时间做所有额外的工作。

然而,

一旦情况停止变化,我还是有点过时了,最后一个想调用 DoWork 的线程早已不复存在。有没有办法告诉线程:

0 投票
2 回答
596 浏览

javascript - 在函数内反应 useEffect 陈旧值

在以下情况下 ,如何更新simulationOn函数内部变量的值:executeSimulation

通过外部代码更改应用this.state.simulationOn程序 --> ... --> React 无状态组件 ( Robot) 重新渲染 -->useEffect使用新值调用钩子 -->executeSimulation未使用simulationOn.

在上面的示例中,simulationOn永远不会更改为false,即使使用更新的值调用 useEffect (我使用 console.log 检查)。我怀疑这是因为新的值simulationOn永远不会传递给函数的范围executeSimulation,但我不知道如何在函数内部传递新的钩子值executeSimulation