Publish/Subscribe API 设计:取消订阅并更新

Publish/Subscribe API design : Unsubscribe and Update

我正在寻找一个 Publication/Subscription 系统来修改当前订阅。我找不到任何东西,所以我想我会建立自己的(在 JavaScript)。

我有 publishsubscribe 的基本方法如下:

ps.publish(params, function(err, res) {
...
});

ps.subscribe(params, function(err, data) {
...
});

现在我想为 unsubscribingupdate 添加我的订阅方法。 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