есть ли классная отложенная библиотека в ActionScript? - PullRequest
1 голос
/ 07 февраля 2011

JSDeffered - это круто: https://github.com/cho45/jsdeferred/blob/master/test-jsdeferred.js

мы можем написать простейшую цепочку асинхронных вызовов.

next(function () { // this `next` is global function
    alert("1");
}).
next(function () { // this `next` is Deferred#next
    alert("2");
}).
next(function () {
    alert("3");
});

наш код такой спагетти-код, как этот new Execute1(nextFunction); ....

есть ли какая-нибудь классная отложенная библиотека в ActionScript?или какой скрипт вы используете?

Ответы [ 4 ]

4 голосов
/ 14 февраля 2012

Я только что сталкивался с этим:

https://github.com/CodeCatalyst/promise-as3

Я еще не пробовал, но выглядит ... многообещающе.Он создан по образцу отложенного jQuery, соответствует спецификации CommonJS Promise / A (я полагаю) и имеет приличный набор модульных тестов.

3 голосов
/ 07 февраля 2011

Очень просто создать этот синтаксис самостоятельно. Каждая функция должна возвращать экземпляр самого класса (возвращать это).

Создайте класс as3 с именем Chainer

package  
{
    public class Chainer 
    {
        public static function create():Chainer
        {
            return new Chainer();
        }

        public function next(func:Function, ...rest):Chainer
        {
            func.call(this, rest); // call the function with params
            return this; // returns itself to enable chaing
        }
    }

}

Теперь используйте класс с вашей следующей функцией. Вы можете назвать это так:

Chainer.create()
    .next(function():void { 
        trace("1") 
    } )
    .next(function():void { 
        trace("2") 
    } );

Могут возникнуть проблемы, если вы хотите расширить класс Chainer, поскольку вы не можете изменить тип возвращаемого значения:
ООП проблема: расширение класса, переопределение функций и jQuery-подобный синтаксис

Я использовал этот тип кода для создания небольшого вспомогательного класса:
http://blog.stroep.nl/2010/10/chain-tween/
http://blog.stroep.nl/2009/11/delayed-function-calling-chain/

Кстати, эта библиотека анимации движения также основана на синтаксисе jQuery:
http://code.google.com/p/eaze-tween/

1 голос
/ 09 февраля 2011

Я не уверен, что это то, что вы ищете, но здесь есть довольно хороший порт LINQ для AS3: https://bitbucket.org/briangenisio/actionlinq/wiki/Home

1 голос
/ 07 февраля 2011

Я думаю, что большинство твининговых библиотек будут делать именно то, что вы просите.Например, TweenLite и TimelineLite (https://www.greensock.com/timelinelite/) должны отлично выполнять эту работу.

...