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();
}
}