有没有办法在延迟后停止功能?节点

Is there a way of stopping a function after a delay? Nodejs

是否可以在延迟后中止功能?类似于:

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

after(10000).stop(f)

知道怎么做吗? 谢谢。

像这样尝试集群模块

const cluster = require('cluster');

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

您可以将您的函数包装在一个检查时间的函数中。

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

所以我们会有图书馆 killer.js

const cluster = require('cluster');

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

以及使用示例

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

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

killer(fn, 100);