我在node.js函数中有这组代码(这是一个非常简化的版本)。我运行buildWorkout()
并调用递归函数createWorokout()
,后者又调用它自己几次,然后将生成的训练传递回buildWorkout()
的回调。
问题是如果我再次运行buildWorkout()
,vars.workout
变量将包含我上次运行它时的确切数据,因此该函数只会添加它。
非常奇怪,我不经常采取递归方法,我相信那是我的错误所在。我该如何修复我的代码?
var buildWorkout = function( pool, cb ) {
var vars = null
var vars = {
workout: config.warmup,
numOfExercises: 4
}
return createWorkout( pool, vars, cb )
}
var createWorkout = function( pool, vars, cb ) {
sqlCall( pool, function( exercise ) {
if ( exercise == null ) {
createWorkout( pool, vars, cb )
} else {
vars.workout.push( exercise )
if ( vars.workout.length = vars.numOfExercises ){
return cb( vars.workout ) //call callback with return value
} else {
return createWorkout( pool, vars, cb ) //recurssion
}
}
} )
}