我想在循环调用服务时传递参数。问题是
1- 如果我在下面的代码中使用匿名函数;
for (var j:int = 0; j < listItems.length; j++)
{
_service.addEventListener(ResultEvent.RESULT, _anonymous = function(event:ResultEvent):void{
thumbnailResultHandler(event,listItems[k].ObjectID)
});
}
然后,当开始运行thumbnailResultHandler时,推送 j 的最新值,以及 listItems 数组的最新值。因为他们正在异步工作。
2-如果我使用以下选项来传递参数;
_anonymous = onClick(listItems[j].ObjectID,j);
_service.addEventListener(ResultEvent.RESULT, _anonymous);
在 for 循环中,这里是 onClick 函数
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 次工作。
这必须在每个 resultHandler 中工作一次,但在每个结果中读取两个参数。
假设 listItems.length = 5
有什么建议可以解决这个问题吗?