gpt4 book ai didi

javascript - 发布/订阅API设计: Unsubscribe and Update

转载 作者:行者123 更新时间:2023-12-03 08:56:15 35 4
gpt4 key购买 nike

我正在寻找一个发布/订阅系统,可以让我修改当前的订阅。我找不到任何东西,所以我想我应该构建自己的(用 JavaScript)。

我有发布订阅的基本方法,如下所示:

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

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

现在我想添加用于取消订阅更新我的订阅的方法。 IE。如果 subscribe 为 CREATE,则 unsubscribe 为 DELETE,update 为 PUT。

我应该如何设计这些 API?update 应该只是一个 unsubscribe 后跟另一个 subscribe 吗?如何让用户选择订阅哪个?

此外,我计划使用返回值返回 future,因为我发现它是组合异步调用的更优雅的方式,但我不确定这是否是最佳选择,我仍在根据流畅的 API 来权衡它。因此,除非我能明确选择,否则我暂时不使用它。

取消订阅似乎很容易,但我不想最终出现在错误的地方:

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

我应该如何构建这些方法?

最佳答案

通常订阅函数会返回另一个用于取消订阅的函数。您可以从订阅返回一个函数,当不带任何参数调用该函数时,该函数将取消订阅,但当使用另一个函数作为参数调用时,该函数将更新订阅。

在代码中它看起来像这样。

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

关于javascript - 发布/订阅API设计: Unsubscribe and Update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32488030/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com