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总是一个空数组,而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 回答