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 関数に値を渡してから、5 回ではなく 5x5 回動作する両方にアクセスします。

これは各 resultHandler で 1 回動作する必要がありますが、すべての結果で両方のパラメーターを読み取ります。

assume listItems.length = 5

この問題を解決するにはどうすればよいですか?

4

0 に答える 0