我的循环中有一个闭包的问题。我在这做什么:
this.newResults.cyclists.forEach(function(cyclist){
that.calcUsersScore( that.usersScoresByLigue,cyclist,bonus );
bonus--;
if(bonus === 0) {
console.log("c'est terminé");
that.addUsersScore( that.usersScoresByLigue );
}
});
所以我想执行我的函数addUsersScore()
,其变量usersScoreByLigue
由先前函数calcUsersScore();
更新。
我的问题是这个函数calcUsersScore()
执行起来很长(一些请求带有数据库和多个测试)所以如何等待它并确保addUsersScore()
之后发生了什么?
提前致谢,
答案 0 :(得分:0)
如果您可以修改that.calcUsersScore
的代码,可以在完成其他内容后使用callBack:
calcUsersScore: function( usersScoresByLigue, cyclist, bonus, callback) {
//do whatever it does allready
// on handler of the server response call the callback
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
callback && callback();
}
}
}
您的代码可以成为:
this.newResults.cyclists.forEach(function(cyclist){
that.calcUsersScore( that.usersScoresByLigue, cyclist, bonus, function(){
bonus--;
if(bonus === 0) {
console.log("c'est terminé");
that.addUsersScore( that.usersScoresByLigue );
}
});
});