/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.runtime.js.threading; import com.google.gwt.core.client.JavaScriptObject; public class JsInterval extends JavaScriptObject { public static native JsInterval create(Runnable runnable)/*-{ return {runnable: runnable}; }-*/; protected JsInterval() { } public final void scheduleNow() { schedule(0); } public native final void schedule(int msec)/*-{ if (this.timerId) { clearTimeout(this.timerId); this.timerId = null; } var _runnable = this.runnable this.timerId = setTimeout(function() { _runnable.@java.lang.Runnable::run()(); }, msec); }-*/; public native final void cancel()/*-{ if (this.timerId) { clearTimeout(this.timerId); this.timerId = null; } }-*/; }