alexa

How do i stop Timeout from running if condition changes/updates in node js ?

How do i stop Timeout from running if condition changes/updates in node js ?

This works perfectly in browser console (you can launch the snippet), should work in Node as well:

 

 // Object of your condition
const isEnd = {
  _value: false, // this is the value of the condition
  valueListener: function(val) {}, // defining a generic listener

  // getter
  get value() {
    return this._value;
  },

  // setter
  set value(val) {
    this._value = val;
    this.valueListener(val); // when changing the value, the function valueListener is called with the new value set
  },

  // method to pass an actual listener function to valueListener property
  listenTo: function(listener) {
    this.valueListener = listener;
  }
};

console.log("START: isEnd has a value of: " + isEnd.value);


// timer of 20 seconds
const timer = setTimeout(() => {
  console.log('Timer expired');
}, 20000)

// you subscribe to the isEnd.value change, passing an actual listener function
// this function should contain the logic to execute
// based on the new condition value
// (like clearing the timer)
isEnd.listenTo(function(val) {
  console.log('new value for isEnd is now: ' + val);

  if (val === true) {
    if (timer) {
      clearTimeout(timer);
      console.log('timer cleared!');
    }
  }

  if (val === false) {
    console.log('HEY... false again!');
  }
})

// timer of 5 seconds that simulates
// the condition changing after 5 seconds
setTimeout(function() {
  isEnd.value = true;
}, 5000)

// timer of 10 seconds that simulates
// the condition changing after
// another 5 seconds
setTimeout(function() {
  isEnd.value = false;
}, 10000)

459 0
7

Write a Comments


* Be the first to Make Comment

GoodFirms Badge
GoodFirms Badge

Fix Your Meeting With Our SEO Consultants in India To Grow Your Business Online

Facebook
Twitter
LinkedIn
Instagram
Whatsapp
Call Now
Quick Inquiry