如何将参数传递给回调函数。

时间:2013-02-22 04:29:27

标签: asynccallback

这是我的代码。如何在回调函数中获取for循环的值。我需要在回调中访问gradableGBItems [i] .Title

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);
                     }


            });





        }

1 个答案:

答案 0 :(得分:0)

您的对象超出了匿名回调的范围。处理此问题的一种可能方法是创建一个回调函数并将其传递给:

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));