Publish/Subscribe API 设计:取消订阅并更新
Publish/Subscribe API design : Unsubscribe and Update
我正在寻找一个 Publication/Subscription 系统来修改当前订阅。我找不到任何东西,所以我想我会建立自己的(在 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
吗?如何让用户选择订阅?
此外,我打算将 return 值用于 return 和 future
,因为我发现它是组合异步调用的一种更优雅的方式,但我不确定如果这是最好的选择,我仍然会比较流利的 API。因此,除非我可以明确选择,否则我暂时不使用它。
unsubscribe
看起来很简单,但我不想在错误的地方结束:
ps.subscribe(params, function(err, data) {
ps.unsubscribe(data.id);
});
我应该如何构建这些方法?
通常订阅函数 return 是您用来取消订阅的另一个函数。您可以 return 订阅一个函数,该函数在不带任何参数调用时会取消订阅,但在使用另一个函数作为参数调用时会更新订阅。
在代码中它看起来像这样。
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
我正在寻找一个 Publication/Subscription 系统来修改当前订阅。我找不到任何东西,所以我想我会建立自己的(在 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
吗?如何让用户选择订阅?
此外,我打算将 return 值用于 return 和 future
,因为我发现它是组合异步调用的一种更优雅的方式,但我不确定如果这是最好的选择,我仍然会比较流利的 API。因此,除非我可以明确选择,否则我暂时不使用它。
unsubscribe
看起来很简单,但我不想在错误的地方结束:
ps.subscribe(params, function(err, data) {
ps.unsubscribe(data.id);
});
我应该如何构建这些方法?
通常订阅函数 return 是您用来取消订阅的另一个函数。您可以 return 订阅一个函数,该函数在不带任何参数调用时会取消订阅,但在使用另一个函数作为参数调用时会更新订阅。
在代码中它看起来像这样。
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