gpt4 book ai didi

javascript - 如何停止 Bacon.interval?

转载 作者:行者123 更新时间:2023-12-03 04:28:13 26 4
gpt4 key购买 nike

我有一个定期触发的事件:

let periodicEvent = Bacon.interval(1000, {});
periodicEvent.onValue(() => {
doStuff();
});

我想要的是在需要时暂停并重新启动periodicEvent。如何暂停和重新启动periodicEvent?或者有更好的方法用 baconjs 来做到这一点吗?

最佳答案

  1. 一种不纯粹的方法是添加一个过滤器,在订阅之前检查变量,然后在您不希望发生订阅操作时更改变量:

    var isOn = true;
    periodicEvent.filter(() => isOn).onValue(() => {
    doStuff();
    });
  2. 一种“纯 R”方法是将输入转换为 true/false 属性,并根据该属性的值过滤流:

    // make an eventstream of a dom element and map the value to true or false
    var switch = $('input')
    .asEventStream('change')
    .map(function(evt) {
    return evt.target.value === 'on';
    })
    .toProperty(true);


    var periodEvent = Bacon.interval(1000, {});

    // filter based on the property b to stop/execute the subscribed function
    periodEvent.filter(switch).onValue(function(val) {
    console.log('running ' + val);
    });

Here is a jsbin of the above code

使用 Bacon.when 可能有更好/更奇特的方法。 ,但我还没有达到那个水平。 :)

关于javascript - 如何停止 Bacon.interval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611681/

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