0

RemoteObject を呼び出した後、成功するまで同じ操作を再度呼び出す必要がある場合があります。

private var myserviceRO:RemoteObject = new RemoteObject("myService");
[...]
myserviceRO.operationName.addEventListener(ResultEvent.RESULT, myResultHandler);
myserviceRO.operationName.addEventListener(FaultEvent.FAULT, myFaultHandler);
myserviceRO.operationName(arg1, arg2, arg3);
[...]

 protected function myFaultHandler(faultEvent:FaultEvent):void {
        //under some condition, resend the operation that failed
        (faultEvent.currentTarget as Operation).send();

        //under some condition, resend the operation that failed
        (faultEvent.currentTarget as Operation).send((faultEvent.currentTarget as Operation).arguments);
 }

私の操作には3つの引数が必要であり、パラメーターをsend()メソッドに渡す方法がわかりません。

  • send() を呼び出すと、「0 引数が渡され、3 が期待されます」というエラーが表示されます。
  • send(operation.arguments) を呼び出すと、「1 つの引数が渡され、3 つの引数が必要です」というメッセージが表示されます

send() ドキュメントでは、次のように指定されています。

  • メソッドを実行します。渡された引数は、
  • メソッド呼び出し。引数が渡されない場合、引数オブジェクト
  • パラメータのソースとして使用されます。

したがって、引数を送信しない場合、元の引数が使用されるはずですが、明らかにそうではありません。

アプリケーションをデバッグすると、 (faultEvent.currentTarget as Operation).argumentNamesは常に空の arrayであり、argumentsは常に空の Objectであることがわかります。

パラメータを渡す方法を教えてください。

ありがとうございました。

4

1 に答える 1

1

解決策は次のとおりです。

protected function myFaultHandler(faultEvent:FaultEvent):void {
    //Parameters should be set beforehand from the async token
    ((Operation)faultEvent.currentTarget).arguments = faultEvent.token.message.body;

    //Now the parameters are ok
    ((Operation)faultEvent.currentTarget).send();


 }

@AmyBlankenshipブログのクレジット:http: //flexdiary.blogspot.com/2010/02/debugging-responder-result-functions.html

于 2012-06-29T12:34:37.457 に答える