Интерпретация функции Flash AS2 setInterval

Пожалуйста, помогите мне понять этот простой код Flash AS2 (Action Script 2.0). В строке setInterval(function () {blah..},5*1000); действительно function() относится к самому setinterval(the calling function) или просто к безымянной функции.

function wait() {      
    stop();
    var myInterval = setInterval(function () {
        play();
        clearInterval(myInterval);
    }, 5*1000); // stop for 5 seconds
}
wait();

Кто-нибудь может объяснить, как работает приведенный выше код?

Спасибо, дк


person dkjain    schedule 29.08.2014    source источник
comment
Метод setInterval вызывает вашу функцию только с задержкой. Пояснения ниже ...   -  person helloflash    schedule 02.09.2014


Ответы (1)


Метод setInterval вызывает вашу функцию только с задержкой.

Ваш код вызывает anonymously функцию в первом аргументе метода setInterval, но эта функция также может вызываться по имени переменной с точно таким же результатом:

stop();
var myInterval = setInterval(myFunction, 5000);

function myFunction():Void {
    play();
    clearInterval(myInterval);
}

Если мы создадим псевдо-функцию setInterval, как показано ниже:

function myFunction():Void {
    trace('myFunction plays');
}

function pseudoSetInterval(func:Function, delay:Number):Void {
    this.onEnterFrame = function():Void {
        if (getTimer() > delay) {
            func();
            delete this.onEnterFrame;
        }
    }
}

Эти два вызова эквивалентны:

var myInterval = pseudoSetInterval(myFunction, 5000);
var myInterval = pseudoSetInterval(function(){trace("a function plays");}, 5000);
person helloflash    schedule 01.09.2014