Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免baconjs订阅中的内存泄漏_Javascript_Push_Observable_Bacon.js - Fatal编程技术网

Javascript 避免baconjs订阅中的内存泄漏

Javascript 避免baconjs订阅中的内存泄漏,javascript,push,observable,bacon.js,Javascript,Push,Observable,Bacon.js,我的应用程序中有一个使用baconjs库的存储。 此存储侦听我的身份验证令牌的更改。随着登录用户的更改,我想更新其他事件的侦听器,以依赖这个新令牌 但是,每次我与新用户登录时,旧用户都不会被处理掉。我该如何着手解决这个问题 下面是一段代码: token.onValue(token => { add.onValue(task => { fetch(...); }); update.onValue(task => { fet

我的应用程序中有一个使用baconjs库的存储。 此存储侦听我的身份验证令牌的更改。随着登录用户的更改,我想更新其他事件的侦听器,以依赖这个新令牌

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

下面是一段代码:

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

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

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

问题是,您将
令牌
添加
(以及
更新
)相结合,而不使用组合符。在
onValue
处理程序中添加订阅者是一种应该避免的反模式

创建一个包含任务和当前令牌的流,并使用该流进行抓取:

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

问题是您正在将
令牌
添加
(以及
更新
)组合,而不使用组合符。在
onValue
处理程序中添加订阅者是一种应该避免的反模式

创建一个包含任务和当前令牌的流,并使用该流进行抓取:

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