如何在JINT Javascript端创建计时器
我正在使用JINT( https://github.com/sebastienros/jint )开发一个C#项目,我需要在我的JS上创建一个计时器,这样每次定时器时间设置结束时它都可以在我的javascript上执行一个函数。 我怎么能做到这一点? 我使用了setInterval或setTimeout函数,但似乎它们不是JINT的一部分,因为它基于ECMASCRIPT,并且这些函数不是本机的。
谁能告诉我怎么做到这一点?
谢谢!!
Jint不支持setInterval
和setTimeout
,因为它们是浏览器中Window API的一部分。 使用Jint而不是浏览器,我们可以访问CLR,说实话,它更加通用。
第一步是在CLR端实现我们的Timer,这是一个非常简单的内置int System.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))
这是一个用法示例:
上述就是C#学习教程:如何在JINT Javascript端创建计时器分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
internal class Program { private static void Main(string[] args) { var engine = new Engine(c => c.AllowClr(typeof (JsTimer).Assembly)) .SetValue("log", new Action
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1043252.html