如何在JINT Javascript端创建计时器

尼科·里夫

我正在使用JINT(https://github.com/sebastienros/jint开发一个C#项目,我需要在我的JS上创建一个计时器,以便每次经过计时器tim设置时它都可以在我的JavaScript上执行一个功能。我该怎么做?我使用过setInterval或setTimeout函数,但由于它们基于ECMASCRIPT,因此它们似乎不是JINT的一部分,并且此函数不是本机的。

有人可以告诉我我该怎么做吗?

谢谢!!

用户名

无论是setIntervalsetTimeout被Jint,因为他们是在浏览器窗口API的一部分支持。使用Jint,而不是浏览器,我们可以访问CLR,并且说老实话,它的用途更加广泛。

第一步是在CLR端实现我们的Timer,这是内置intSystem.Threading.Timer类的一个非常简单的Timer包装器

namespace JsTools
{
    public class JsTimer
    {
        private Timer _timer;
        private Action _actions;

        public void OnTick(Delegate d)
        {
            _actions += () => d.DynamicInvoke(JsValue.Undefined, new[] { JsValue.Undefined });
        }

        public void Start(int delay, int period)
        {
            if (_timer != null)
                return;

           _timer = new Timer(s => _actions());
           _timer.Change(delay, period);
        }

        public void Stop()
        {
            _timer.Dispose();
            _timer = null;
        }
    }
}

下一步是绑定JsTimer到Jint引擎:

var engine = new Engine(c => c.AllowClr(typeof (JsTimer).Assembly))

这是一个用法示例:

internal class Program
{
    private static void Main(string[] args)
    {
        var engine = new Engine(c => c.AllowClr(typeof (JsTimer).Assembly))
            .SetValue("log", new Action<object>(Console.WriteLine))
            .Execute(
                @" 
var callback=function(){
   log('js');
}
var Tools=importNamespace('JsTools');
var t=new Tools.JsTimer();
t.OnTick(callback);
t.Start(0,1000);
");

        Console.ReadKey();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在JavaScript中创建准确的计时器?

来自分类Dev

如何在JavaScript中使用服务器端倒数计时器?

来自分类Dev

如何在JavaScript中创建计时器并计算指定时间的点击次数?

来自分类Dev

如何创建“倒数计时器” GIF?

来自分类Dev

如何创建可重置计时器?

来自分类Dev

如何创建计时器功能?

来自分类Dev

如何创建可重置计时器?

来自分类Dev

如何使用JLabel创建计时器?

来自分类Dev

如何创建倒数计时器

来自分类Dev

如何为 WPF 创建计时器

来自分类Dev

如何在Java Applet中创建倒数计时器?

来自分类Dev

如何在React-hooks中创建计时器

来自分类Dev

如何在flutter中创建子计时器?

来自分类Dev

如何在Java Applet中创建倒数计时器?

来自分类Dev

如何在android programmaticaly中创建计时器?

来自分类Dev

EJB计时器:如何从客户端启动和停止EJB计时器?

来自分类Dev

如何使计时器的JavaScript变量动态

来自分类Dev

如何修复此Javascript计时器

来自分类Dev

如何在JavaScript中暂停和恢复计时器?

来自分类Dev

如何在javascript / jquery中重置计时器?

来自分类Dev

如何在 Javascript 中制作毫秒计时器?

来自分类Dev

如何在javascript中停止计时器?

来自分类Dev

如何创建淡入式倒数计时器?

来自分类Dev

在我的情况下如何创建计时器?

来自分类Dev

如何为每个问题创建测验倒数计时器

来自分类Dev

如何创建一个计时器?

来自分类Dev

如何创建基于计时器的骆驼轮询路线?

来自分类Dev

如何创建不停止加载 WebBrowser 的等待计时器?

来自分类Dev

浏览器如何存储JavaScript计时器?