在调用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()文档指定:
- 执行该方法。传入的任何参数都作为
的一部分传递- 方法调用。如果没有传递参数,则参数对象
- 用作参数来源。
因此,如果我不发送任何参数,原始参数应该被使用,但显然不是。
调试我的应用程序显示(faultEvent.currentTarget as Operation).argumentNames 总是空数组,参数总是< strong>空对象。
你能告诉我如何传递参数吗?
谢谢。答案 0 :(得分: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