gpt4 book ai didi

javascript - setTimeout 调用顺序

转载 作者:行者123 更新时间:2023-11-28 10:02:45 24 4
gpt4 key购买 nike

我正在使用 setTimeout 来可视化强化学习算法,并对它的行为感到好奇。

以下代码显示了 while oop 中使用的 setTimeout。循环的每次迭代都应该使用一个版本的state,该版本已被前一次迭代修改。是否有可能第二次调用 setTimeout 会在第一次调用之前发生,并且 state 的值将无法正确更新?我问的部分原因是我认为我实际上注意到了一些奇怪的行为,当延迟时间太小时,调用 doLearningInnerLoop 的控制台日志就会乱序(即时间 = 1 4 3 2 5 6 ..etc)。

var doLearningInnerLoop = function(time, observedData, stateHolder, domain, sampleAction, selectModel, numSamples, depth, discount, stateQueries) {
console.log("new Round, time = " + time);
var state = stateHolder.state;
var currentModel = selectModel(observedData, 10, stateQueries);
var bestAction = sparseSampleMcmc(depth, numSamples, discount, currentModel, state, sampleAction, stateQueries);
var newStateReward = domain.executeAction(bestAction, stateQueries);
observedData.push(bestAction, newStateReward[1], newStateReward[0]);
stateHolder.state = newStateReward[0];
}

var doLearningLoops = function(time, observedData, state, domain, sampleAction, selectModel, numSamples, depth, discount, stateQueries) {
stateHolder = {};
stateHolder.state = state;
while(stateQueries['canContinue']['codeAsFunction'](time, stateHolder.state) === true) {
setTimeout(doLearningInnerLoop, 1000, time, observedData, stateHolder, domain, sampleAction, selectModel, numSamples, depth, discount, stateQueries);
time += 1;
}
return state;
}

最佳答案

我相信我发现了类似的 setTimeout 调用未按预期顺序发生的问题。

参见:Are equal timeouts executed in order in Javascript?

上面的答案是 Firefox 似乎做得很好(根据来源),但其他人也遇到了这个问题(也许他们使用的是不同的浏览器)。

关于javascript - setTimeout 调用顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com