发布/订阅API设计:取消订阅和更新
Publish/Subscribe API design : Unsubscribe and Update
我正在寻找一个允许我修改当前订阅的发布/订阅系统。我找不到,所以我想我可以建立自己的(JavaScript)。
我有publish
和subscribe
的基本方法如下:
ps.publish(params, function(err, res) {
...
});
ps.subscribe(params, function(err, data) {
...
});
现在我想在订阅中添加unsubscribing
和update
的方法。Ie。如果subscribe
为CREATE,则unsubscribe
为DELETE, update
为PUT。
我应该如何设计这些api ?update
应该只是一个unsubscribe
,然后是另一个subscribe
吗?如何让用户选择哪个订阅?
另外,我计划使用返回值来返回future
,因为我发现这是一种更优雅的方式来组合异步调用,但我不确定这是否是最好的选择,我仍然对流畅的API进行加权。因此,除非我有明确的选择,否则我宁愿现在不使用它。
unsubscribe
似乎是简单的一个,但我不想在错误的地方结束:
ps.subscribe(params, function(err, data) {
ps.unsubscribe(data.id);
});
如何构建这些方法
通常订阅函数返回另一个用于退订的函数。你可以从subscribe返回一个函数,当不带任何参数调用时,该函数将取消订阅,但当带另一个函数作为参数调用时,该函数将更新订阅。
在代码中应该是这样的:
ps.subscribe = function (params, callback) {
...
return function (callback) {
if (callback) {
...
// update - replace with a new callback
} else {
...
// cancel subscription
}
}
}
var changeSubscription = ps.subscribe(params, callback);
changeSubscription(anotherCallback); // update
changeSubscription(); // unsubscribe
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- Javascript循环不会自我更新
- jquery点击函数select&取消选择
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- 取消复选框未进行可视化更新
- 正在阻止取消角度xeditable的模型更新
- 单击编辑按钮后显示更新和取消按钮
- 更新全选/取消全选复选框
- 取消计算绑定,不更新模板名
- 取消注册/更新私有服务器注册表上的包
- 发布/订阅API设计:取消订阅和更新
- 我可以“;取消”;在更新面板中发生的长时间运行的进程
- 如何在不取消复选框的情况下通过Ajax更新复选框列表
- 添加新按钮“保存并下一步”,除了 更新 和 取消 在 extjs 的可编辑网格中给出
- jQuery排序只有一个列表仍然更新,如果取消