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.
3 Réponses :
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('#'); } }
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) } }
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(); } }