0

我想在循环调用服务时传递参数。问题是
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

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

4

0 回答 0