0

階層構造の 2 つのレベルの結果を取得したい。AsyncToken の最初の結果は OK です。次に、for ループを設定し、各ループ ステップで同じ方法で次のレベルの結果を呼び出します。ここに問題がありtoken2.addResponder(responder2);ます。各ループステップで、時間どおりに結果を返すことはありません。結局、ループ結果の結果を送ってくれます。しかし、私は各ステップで必要です。私の間違いについて教えてください。

public function getChildResultHandler(event:ResultEvent, token:Object=null ):void
{
        myObject=event.result;  //first asynToken result is Ok
        var myArrayCol:ArrayCollection=new ArrayCollection();               
        myArrayCol=ArrayCollection(myObject);
        var mlObject:MLObject=new MLObject();  

        var i:int;
        for(i=0;i<myArrayCol.length;i++)
        {
            mlObject=myArrayCol[i]; 

            if (mlObject.Type=="Bin")
            {
                token2=new AsyncToken(null);
                token2=myService.GetChildObjects(sessionID,mlObject.ObjectID);
                responder2=new  AsyncResponder(getNextLevelChild,getChildFaultHandler);
                token2.addResponder(responder2);
            // I cant get results here 
            // this query goes to getNextLevelChild func after for loop results
            }
        }
    } 

両方の結果を待つ必要がありますか? はいの場合、レスポンダーまたはトークンを待つにはどうすればよいですか?

4

2 に答える 2

0

このチュートリアルは、発生している問題と非常によく似た問題を解決するため、役立つ場合があります。ABCの文字を渡して行われる3つのリモートプロシージャコールがあります。呼び出しはBACの順序で返されます。このチュートリアルでは、ASyncTokenとレスポンダーを使用して、どの結果ハンドラーがどの呼び出しに対して起動しているかを確認する方法を示します。

于 2013-02-17T09:00:03.610 に答える
0

これらは非同期呼び出しであるためです。返された結果の順序を知ることはできません。最初の通話が最初に終了する場合もあれば、2 番目の通話になる場合もあります。

したがって、正しい結果を得るには、すべての非同期呼び出しの終了時刻を待つ必要があります。

于 2012-10-18T10:12:03.970 に答える