setTimeout, clearTimeout в закрытии - PullRequest
0 голосов
/ 08 ноября 2011
var clearId:int = setTimeout(function():void{
            //some code here
            clearTimeout(clearId);
        },2000);

Это действительный AS3?Кто-нибудь видит проблемы с этим?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Несмотря на то, что он компилируется без предупреждений или ошибок и является действительным AS3, он не нужен.

Функция setTimeout запускает функцию только один раз.

С другой стороны, функция setInterval запускает функцию с заданным интервалом до вызова clearInterval.

clearTimeout используется для остановки события тайм-аута, которое было установлено.Поскольку тайм-аут происходит только один раз, нет необходимости очищать его в функции тайм-аута.Если бы вы использовали setInterval, вам нужно будет очиститьInterval, когда вы больше не хотите, чтобы функция вызывалась.

1 голос
/ 08 ноября 2011

Это действительно? Да. Это работает? Да. Имеет ли это какой-то смысл? Нет.

Тайм-аут выполняется только один раз.Закрытие обязательно вызывается только после истечения времени ожидания.Теперь, если бы вы использовали интервал , это имело бы смысл.

Метод работает, потому что компилятор заранее определяет все эти локальные переменные, делая их автоматически доступными.По сути, он делает что-то вроде этого:

var clearId:int;
clearId = setInterval(function():void
{
    clearInterval(clearId);
}, 2000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...