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

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 构造映射构造对象?

强制停止javascript执行功能

如何在场景之外正确删除节点

节点js停止处理来自角度的多个api请求并在重新启动节点应用程序后工作

以编程方式选择节点后,防止 jsTree 扩展节点