有没有办法在延迟后停止功能?节点
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);
是否可以在延迟后中止功能?类似于:
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);