2009-07-19 2 views
2

Я возился со зданием приложения для Palm Pre.Mojo SDK - установить таймер

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

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

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

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

Ни один не похоже на работу. Как я могу это сделать?

ответ

3

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

Я был в состоянии решить эту проблему с помощью:

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

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

+0

Как вы обойдете эту «проблему», которую вы описали. Что делать, если у меня была модель под названием txtmodel с свойством, называемым значением. Вне функции задержки я бы просто позвонил this.txtmodel.value = 'foo' –

+0

Хорошо, это было для меня просто «духом». Я просто передаю ссылку на это своей функции задержки, и она работает. Спасибо за совет! –

+0

@cody Другое (возможно, лучшее) решение заключается в использовании метода «привязки» прототипов, чтобы убедиться, что «это» всегда то, что вы ожидаете от него, когда этот метод вызывается. –

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^