javascript - 避免 baconjs 订阅中的内存泄漏

标签 javascript push observable bacon.js

我的应用程序中有一个商店使用 baconjs 库。 这家商店监听我的身份验证 token 的变化。随着登录用户的变化,我想更新其他事件的监听器以依赖这个新 token 。

但是,每次我用新用户登录时,旧订阅者都不会被处理掉。我将如何着手解决这个问题?

这是一段代码:

token.onValue(token => {
    add.onValue(task => {
        fetch(...);
    });

    update.onValue(task => {
        fetch(...);
    });
});

请注意,无论任何人订阅任何可观察对象,始终执行提取对我来说很重要,因为我想要这两个操作的推送语义。

最佳答案

问题是您在不使用组合器的情况下将 tokenadd(以及 update)组合在一起。在 onValue 处理程序中添加订阅者是一种应该避免的反模式。

创建一个包含任务和当前 token 的流,并使用它来进行抓取:

Bacon.combineTemplate({
  task: add,
  token: token
}).onValue(function(v) {
  fetch(v.task, v.token);
})

关于javascript - 避免 baconjs 订阅中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851298/

相关文章:

javascript - Javascript 中的嵌套函数参数和 'this' 上下文

notifications - Joomla 中的 iPhone 推送通知

git - 推送到裸 Git 存储库时出现 'receive.denyCurrentBranch' 错误

javascript - RxJS 1 array item into sequence of single items - 运算符

javascript - 使用 RxJS Observables 的 Promise.all 行为?

angular - 可以从异步管道调用类方法吗?

javascript - dc.js:dispose() 和 deregisterChart() 的问题

javascript - javascript中的双向链表

javascript - 我如何在 javascript 或 jQuery 中 trim ?

javascript - Jquery 数组与图像的迭代