Home > Enterprise >  How can I construct this server backend route?
How can I construct this server backend route?

Time:02-24

I'm working on a fullstack project where I need a way to effectuate the following scenario:

Upon a user submit event:

  1. A request is posted to the backend
  2. When the server receives the req., it begins executing some function
  3. The backend should run said function on a loop/indefinitely until the backend receives a subsequent request which instructs the server to cease executing the function after the function completes its current iteration.

I know there must be a way to work this out, but I haven't been able to figure out how to condense my problem/question into something I can google search my way through.

The following will hopefully help to convey what I'm trying to accomplish:

let run_function = false;

app.post('/start', (req, res) => {
  run_function = true;
  while (run_function)
    the_function(req.body);
}

app.get('/stop', (req, res) => {
  run_function = false;
}

CodePudding user response:

Seems like a job for setInterval() / clearInterval()

let handle

// Default 200ms interval
const startLoop = (body, interval = 200) => {
  clearInterval(handle) // stop any previous loops
  handle = setInterval(the_function, interval, body)
}

app.post("/start", (req, res) => {
  startLoop(req.body)
  res.send("Started")
})

app.post("/stop", (req, res) => {
  clearInterval(handle)
  res.send("Stopped")
})

CodePudding user response:

let LoopInterval = null;

app.post('/start', (req, res) => {
    LoopInterval = setInterval(() => {
        the_function(req.body);
    }, 0);
});


app.get('/stop', (req, res) => {
    clearInterval(LoopInterval)
});
  • Related