保存的工作流程被设计去适应web的异步服务。当part发出partDosave事件时,要先初始化它的save服务,通常,开发者会在partDoSave前,调用partEvent#sendBusy方法去显示busy动画。
当用户试图去关闭dirty part时,potomac会派发partDoSave事件。Potomac直到它收到partSaveComplete事件时才会关闭part。如果potomac 收到partSaveError事件,它会退出保存过程。当save error发生,part的作者被期望在part UI上提供反馈。开发人员使用Alert或其他对话框显示此反馈。Potomac可以处理多个part,在同一个save cycle,因此,多个alert对话框被层叠的显示。开发者应该为每个part提供UI控件去显示错误信息。
个人理解save Cycle,可能还有保存的时间循环机制,因为actionScript是基于事件机制,而且是单线程,个人觉得保存可能存在轮询。
Example:
public var myHTTPService:HTTPService = ...; [Handles(event="partDoSave")] public function save(event:PartEvent):void { PartEvent.sendBusy(this,"Saving Record..."); myHTTPService.send(...); } [Handles(source="myHTTPService",event="result")] public function saveSuccess(e:Event):void { PartEvent.sendIdle(this); PartEvent.sendSaveComplete(this); } [Handles(source="myHTTPService",event="fault")] public function saveError(e:Event):void { PartEvent.sendIdle(this); PartEvent.sendSaveError(this); errorText.visible = true; errorText.text = "Help, I've fallen and I can't get up. "; }