У меня есть рекурсивная функция, содержащая код чертежа внутри. Мне было рекомендовано использовать setTimeout, так как мой чертеж не показывался до конца извлечения. Сначала я ввел только код чертежа внутри setTimeout, но это не помогло, однако, когда я поставил основной рекурсивный цикл внутри setTimeout, рисунок работал отлично, как показано ниже.Javascript - получение возвращаемого значения для 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;
}
}
Можете ли вы объяснить, почему * * вам нужно это значение? Это может помочь нам предоставить соответствующий ответ. –
где рекурсия – Esailija
Рекурсия - это вызов doLearning. Мне нужно значение, потому что doLearning на самом деле также вызывается selectModel. Он возвращает модель, которую я использую в следующих шагах, например, при выборе bestAction – zenna