0

だから、私はこの NodeJS コードを持っています:

for(var i = 0; i < subcats.length; i++) {

            subcats[i].getChallenges(function(challenges) {
                this.challenges = challenges;

                if(index == subcats.length - 1)
                    res.render('challenges/category', {'category': category, 'subcats': subcats});
            });

        }

問題は、getChallenges が関数を呼び出すまでにインデックスが限界点に達し、最後の getChallenge コールバックでのみ res.render を呼び出す必要があることです。これを行う方法はありますか?ありがとう!!!

4

2 に答える 2

0

関数スコープ外のインデックス変数を使用し、コールバックでインクリメントします。

var completed = 0;
for(var i = 0, len = subcats.length; i < len; i++) {
  subcats[i].getChallenges(function(challenges) {
    this.challenges = challenges;

    if(++completed == len) {
      res.render('challenges/category', { 'category': category, 'subcats': subcats });
    }
  });
}
于 2013-07-15T23:42:55.860 に答える