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