Где "setTimeout" из JavaScript в Haxe?

Есть ли в Haxe реализация setTimeout() и clearTimeout()? Конечно, можно использовать класс Timer, но, я думаю, для выполнения одним выстрелом это не лучший способ.

Ответ 1

Для однократного выполнения я думаю, что Timer.delay() идеально подходит. Вы можете использовать возвращенный экземпляр, чтобы позже остановить таймер:

var timer = haxe.Timer.delay(function() trace("Hello World!"), 250);
...
timer.stop();

Вы также можете получить доступ к собственному setTimeout() с помощью js.html.Window extern:

var handle = js.Browser.window.setTimeout(function() trace("Hello World!"), 250);
...
js.Browser.window.clearTimeout(handle);

Ответ 2

В случае, если вы используете платформу Kha, haxe.Timer.delay() вызывает kha.Scheduler, который, в конце концов, не получает timestamps через setTimeout - он получает их через requestAnimationFrame().

Кажется, что это не работает, когда вкладка неактивна, так что это не та же функция, когда вкладка неактивна.

Я пытаюсь обойти эту проблему, но на данный момент она не дает того же результата, что и нативная setTimeout() -JS (хотя я нашел решение, которое я представлю для включения).