在我的应用程序中,我正在从/ qx.io.rest.Resource
加载/保存一些数据。为了隐藏REST的复杂性,我想向应用程序组件公开一个简化的高级接口;想一想load()/ save()方法以及一些监视操作进度的事件。
在这种情况下,总共有六个事件:[加载,保存] x [开始,成功,失败]。 (我对监控传输的数据量不感兴趣,因为典型的请求将少于1KB。)
为此活动计划建模的最佳/首选方式是什么?我是否使用单一事件类型并将所有信息打包到事件数据中,还是使用不同的事件类型?我应该延长qx.event.type.Event
,还是应该采用现有的类qx.event.type.Data
?
答案 0 :(得分:3)
这在很大程度上取决于你的活动的自然使用模式;例如,如果任何想要了解进度的代码通常需要订阅[开始,成功,失败]的所有三个,那么添加"进展"更合适。类型为qx.event.type.Data的事件,数据将包含更细粒度的信息。
这是Qooxdoo中的一种常见模式 - 例如,查看qx.data.Array以及它" s"更改"事件。事件的数据包括有关更改内容的信息,但只有一个事件需要收听。
"负载"并且"保存"是非常不同的事件,所以也许你最终会得到"加载","保存"和"进展"
答案 1 :(得分:2)
我正在使用mixin mylib.io.MREST,我在其中定义了以下事件:
events:
{
"load" : "qx.event.type.Event",
"loadSuccess" : "qx.event.type.Data",
"loadError" : "qx.event.type.Data",
"save" : "qx.event.type.Event",
"saveSuccess" : "qx.event.type.Data",
"saveError" : "qx.event.type.Data",
"del" : "qx.event.type.Data",
"delSuccess" : "qx.event.type.Event",
"delError" : "qx.event.type.Event",
},
这些对应于REST路径加载,保存和del使用请求方法GET,PUT,DELETE与qx.io.rest.Resource。
事件load,save和del在启动时被触发,而methodSuccess,methodError被触发,成功或错误传输。
实现方法load,save,del以启动这些操作,将对象id发送到sessionid,将一些有效负载发送为JSON。