1

JSDeffered is so cool: https://github.com/cho45/jsdeferred/blob/master/test-jsdeferred.js

we can write simplest async call chain .

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

our code is so spagetti code like that new Execute1(nextFunction); ....

is there any cool Deferred library in ActionScript? or Which script are you using?

4

4 回答 4

4

我刚遇到这个:

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

我还没有尝试过,但它看起来......很有希望。它以 jQuery 的 Deferred 为模型,遵循 CommonJS Promise/A 规范(我假设),并且有一组看起来不错的单元测试。

于 2012-02-14T00:51:10.830 回答
3

自己创建这种语法非常简单。每个函数都应该返回类本身的实例(返回 this)。

创建一个名为 Chainer 的 as3 类

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 类,可能会出现问题,因为您无法更改返回类型:
OOP 问题:扩展类、覆盖函数和类似 jQuery 的语法

我已经使用这种类型的代码创建了一个小助手类: http:
//blog.stroep.nl/2010/10/chain-tween/
http://blog.stroep.nl/2009/11/delayed-function-调用链/

顺便说一句,这个补间库也基于类似 jQuery 的语法:
http ://code.google.com/p/eaze-tween/

于 2011-02-07T14:01:15.833 回答
1

我不确定这就是你要找的东西,但是这里有一个非常好的用于 AS3 的 LINQ 端口:https ://bitbucket.org/briangenisio/actionlinq/wiki/Home

于 2011-02-08T21:20:46.527 回答
1

我认为大多数补间库都会完全按照您的要求进行。例如 TweenLite 和 TimelineLite (https://www.greensock.com/timelinelite/) 应该可以完美地完成这项工作。

于 2011-02-07T11:24:26.850 回答