【发布时间】:2016-01-28 18:16:50
【问题描述】:
所以我有这个代码:
Rating.find({user: b}, function(err,rating) {
var covariance=0;
var standardU=0;
var standardV=0;
while (rating.length>0){
console.log("the avarage rating u is:" + avarageRatingU)
console.log("the avarage rating v is:" + avarageRatingV)
currentMovie = rating.pop();
var u=currentMovie.value-avarageRatingU;
standardU = standardU + Math.pow(u,2);
var v=0;
Rating.find({movieid:currentMovie.movieid, user:a}, function(err,ratings) {
if (err) throw err;
if(ratings.length>0){
v=ratings.pop().value-avarageRatingV;
standardV=standardV+Math.pow(v,2);
covariance =covariance+u*v;
console.log(covariance);
}
})
}
console.log(covariance)
callback(null,covariance);
//sim = covariance/(Math.sqrt(standardU)*Math.sqrt(standardV));
})
问题是当我打印协方差时,它会打印 0,因为打印发生在计算之前。我考虑过使用 async.series,但是,我不能在 while 循环中使用回调函数。
任何提示将不胜感激。
泰:)
【问题讨论】:
-
你有search吗? “我考虑过使用 async.series,但是,我不能在 while 循环中使用回调函数。” 这是什么意思?如果您使用
async函数来代替,您将不再有while循环。
标签: javascript node.js asynchronous synchronous