【发布时间】:2012-02-09 04:46:55
【问题描述】:
我有一个递归函数,其中包含一些绘图代码。我被建议使用 setTimeout,因为我的绘图直到执行结束才显示。首先我将绘图代码放在 setTimeout 中,但这并没有帮助,但是当我将主递归循环放在 setTimeout 中时,绘图工作得很好,如下所示。
但是我需要使用 setTimeout 的返回值(即state,如下图所示)。如何在使用setTimeout的时候得到这个返回值,或者用别的方法解决这个问题。
var doLearning = function(time, observedData, state, domain, sampleAction, selectModel, numSamples, depth, discount, stateQueries) {
if(stateQueries[0](time, state) === true) {
console.log("New Round");
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]);
console.log(time);
setTimeout(doLearning, 100, time + 1, observedData, newStateReward[0], domain, sampleAction, selectModel, numSamples, depth, discount, stateQueries);
} else {
console.log("Game Over");
return state;
}
}
【问题讨论】:
-
你能解释一下为什么你需要那个值吗?它可能有助于我们提供适当的答案。
-
递归是对doLearning的调用。我需要这个值,因为 selectModel 实际上也调用了 doLearning。它返回我在以下步骤中使用的模型,例如选择 bestAction
标签: javascript recursion return settimeout