2013-02-22 143 views
0

这是我的代码。如何在回调函数中获取for循环的值。我需要访问回调如何将参数传递给回调函数。

for(var i=0; i < gradableGBItems.length ; i++) 
     { 
      //console.log(gradableGBItems[i].isGradable); 
      //console.log(gradableGBItems[i].id); 
      var resultItem=''; 

      Title=gradableGBItems[i].title; 
      //console.log(Title); 
      //console.log(gradableGBItems[i].id); 
      gradeBookbRestService.loadGradeBookItemByItemId(token, gradableGBItems[i].id, function(resultItem) { 

        //Console.log(); //Need to access value 

        if(resultItem.grade != null || resultItem.grade != undefined) 
        { 
         //console.log(resultItem.points); 
         jsonObj.push({id:resultItem.grade.id, comments:resultItem.grade.comments, isVisible:resultItem.grade.isVisible, letterGrade:resultItem.grade.letterGrade, points: resultItem.grade.points, title: Title }); 


         console.log(jsonObj); 
        } 


      }); 





     } 

回答

0

你的目标是超出范围的匿名回调内部gradableGBItems [I] .title伪。要解决这个问题的一个可能方法是创建一个回调函数,并传递它:

var gradeBookItemCallback = function(gradeableItemTitle, next){ 
    return function(resultItem){ 
    //do something with gradeableItemTitle and/or resultItem. 
    next(); //call the callback. You could pass whatever you wanted to here as well. 
    } 
}); 

它会像这样使用:

gradeBookbRestService.loadGradeBookItemByItemId(token, gradableGBItems[i].id, gradeBookItemCallback(Title, callbackFunctionHere));