Mojo SDK - установить таймер

Я возился с созданием приложения для Palm Pre.

У меня простой вопрос: как я могу настроить таймер для запуска некоторого кода по прошествии определенного времени?

Я пробовал использовать обычный старый javascript setTimeout, но похоже, что он не работает.

Вот что я пробовал:

setTimeout(this.someFunction, 3000);
setTimeout('this.someFunction()', 3000);

Кажется, что ни один из них не работает. Как я могу этого добиться?


person TM.    schedule 19.07.2009    source источник


Ответы (2)


Оказывается, Mojo использует прототип javascript-фреймворка.

Мне удалось решить эту проблему, используя:

this.someFunction.delay(seconds, [functionArgs,]);

Одна вещь, которая меня сбила с толку, заключалась в том, что метод delay изменил значение this, поэтому отложенная функция не должна ожидать, что this будет таким же, как если бы вы просто вызывали ее напрямую.

person TM.    schedule 20.07.2009
comment
Как решить описанную вами проблему. Что, если бы у меня была модель txtmodel со свойством value. Вне функции задержки я бы просто назвал this.txtmodel.value = 'foo' - person Cody C; 27.07.2009
comment
Ладно, для меня это был просто отличный момент. Я просто передаю ссылку на это моей функции задержки, и она работает. Спасибо за совет! - person Cody C; 27.07.2009
comment
@cody Другое (возможно, лучшее) решение - использовать метод привязки прототипов, чтобы убедиться, что это всегда то, что вы ожидаете при вызове этого метода. - person TM.; 27.07.2009

@TM: Спасибо, что указали на метод Prototype bind (). Вчера я боролся с проблемой setTimeout () и в итоге использовал метод Prototype delay (), как вы указали, а затем сегодня утром я увидел в книге Митча Аллена «Palm webOS», что он вызывал setTimeout () на this.controller объект .window, например:
this.controller.window.setTimeout(this.someFunction.bind(this), someNumberOfMilliseconds);

Не думаю, что я заметил бы использование this.controller.window, если бы я не искал именно это решение, и теперь я замечаю несколько мест в книге, где используется this.someFunction.bind (this) , хотя он никогда не объясняет, что это значит. Теперь я знаю!

person Daren    schedule 21.10.2009