1
votes

Existe-t-il un moyen d'arrêter une fonction après un délai? Nodejs

Est-il possible d'annuler une fonction après un délai? Quelque chose comme:

function f() {
    //Do some process here
}

after(10000).stop(f)

Une idée sur la façon de procéder? Merci.


0 commentaires

3 Réponses :


1
votes

Essayez un module de cluster comme celui-ci

const cluster = require('cluster');

if (cluster.isMaster) {
    const fn = cluster.fork();
    setTimeout(_=>fn.process.kill(), 300);
} else {
    for(;;) {
       process.stdout.write('#');
    }
}


0 commentaires

0
votes

Vous pouvez envelopper votre fonction dans une fonction qui vérifie l'heure.

function stopExecutingAfter(timeout, fn) {
  var stopifAfter = Date.now() + timeout
  return function() {
    if(Date.now() > stopIfAfter) return
    fn.apply(null, arguments)
  }
}


0 commentaires

0
votes

Nous aurons donc la bibliothèque killer.js

const killer = require('./killer');

function fn() {
    for(;;) process.stdout.write('#');
}

killer(fn, 100);

Et un exemple d'utilisation

const cluster = require('cluster');

module.exports = (fn, delay) => {
    if (cluster.isMaster) {
        const fn = cluster.fork();
        setTimeout(_=>fn.process.kill(), delay);
    } else {
        fn();
    }
}


0 commentaires