Web services 在循环中将变量参数传递给侦听器方法

Web services 在循环中将变量参数传递给侦听器方法,web-services,actionscript-3,air,event-listener,Web Services,Actionscript 3,Air,Event Listener,我想在调用循环中的服务时传递参数。问题是1-如果我像下面的代码那样使用匿名函数 for (var j:int = 0; j < listItems.length; j++) { _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{ thumbnailResultHandler(event,listItems[k].ObjectID)

我想在调用循环中的服务时传递参数。问题是
1-如果我像下面的代码那样使用匿名函数

for (var j:int = 0; j < listItems.length; j++) 
{
    _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
    thumbnailResultHandler(event,listItems[k].ObjectID)
    });
}
在for循环中,这里是onClick函数

for (var j:int = 0; j < listItems.length; j++) 
{
    _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
    thumbnailResultHandler(event,listItems[k].ObjectID)
    });
}
public function onClick(n:Number,k:Number):Function 
{       
    _service.removeEventListener(ResultEvent.RESULT,_anonymous);
    return function(event:ResultEvent):void 
    {
       trace( count++) ;//traces 25 times but must be just 5.
    }
}
然后,当thumbnailResultHandler运行时,该方法访问我传递给onClick函数的两个值,然后工作5x5次,而不是工作5次

for (var j:int = 0; j < listItems.length; j++) 
{
    _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
    thumbnailResultHandler(event,listItems[k].ObjectID)
    });
}
这必须在每个resultHandler中工作一次,但在每个结果中读取两个参数

for (var j:int = 0; j < listItems.length; j++) 
{
    _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
    thumbnailResultHandler(event,listItems[k].ObjectID)
    });
}
假设listItems.length=5

for (var j:int = 0; j < listItems.length; j++) 
{
    _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
    thumbnailResultHandler(event,listItems[k].ObjectID)
    });
}

有什么建议可以解决这个问题吗?

J在循环中从未得到值4。问题可能不同,当通过第二种方式调用时,是否可以跟踪thumbnailResultHandler参数?这可能是因为您正在将参数传递给匿名函数中的处理程序,这些参数在实际事件激发时是可用的,也将不可用。您可能会得到evt,但listItems[j].ObjectID将无法解析likely@Ihsan当我调试循环时,转到第二行5次,然后返回ListCollectionView的“throw new RangeError(message);”行。为什么循环工作5次而长度=4?我确信这是我说过的,因为当我发送listItems[3]时,ObjectID会起作用。这非常烦人(对我们两人来说都是:D)。因为循环工作方式错误…0123人。。。不是01234?哼。。。也许您删除了一个数组项而不是拼接(索引,1)它。。。那么数组中的位置存在,但值不存在?如果(listItems[j]==null)继续,我将添加一个;去兜圈子,过美好的生活。
for (var j:int = 0; j < listItems.length; j++) 
{
    _service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
    thumbnailResultHandler(event,listItems[k].ObjectID)
    });
}