有没有办法在延迟后停止功能?节点
Posted
技术标签:
【中文标题】有没有办法在延迟后停止功能?节点【英文标题】:Is there a way of stopping a function after a delay? Nodejs 【发布时间】:2019-01-11 08:48:52 【问题描述】:是否可以在延迟后中止功能?比如:
function f()
//Do some process here
after(10000).stop(f)
知道如何做到这一点吗? 谢谢。
【问题讨论】:
【参考方案1】:试试这样的集群模块
const cluster = require('cluster');
if (cluster.isMaster)
const fn = cluster.fork();
setTimeout(_=>fn.process.kill(), 300);
else
for(;;)
process.stdout.write('#');
【讨论】:
【参考方案2】:您可以将您的函数包装在一个检查时间的函数中。
function stopExecutingAfter(timeout, fn)
var stopifAfter = Date.now() + timeout
return function()
if(Date.now() > stopIfAfter) return
fn.apply(null, arguments)
【讨论】:
不工作,函数 stopExecutingAfter(timeout, fn) let stopIfAfter = Date.now() + timeout return function() if(Date.now() > stopIfAfter) return fn.apply(null , 参数) function something() let i = 0 while(true) console.log('Testng kill ' + i++) stopExecutingAfter(1000, something)()【参考方案3】:所以我们将有图书馆杀手.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);
【讨论】:
以上是关于有没有办法在延迟后停止功能?节点的主要内容,如果未能解决你的问题,请参考以下文章
C#.NET 中 树节点的提示框(TOOLTIP)如何设置延迟时间
有没有办法在所有节点完成加载后使用 PyYAML 构造映射构造对象?