# libAsync.series

## 声明

```ts
export declare function series<E>(
    fns: libAsync.SimpleFunction<E>[],
    final?: libAsync.AsyncErrorCallback<E>
): void;
```

## 用途

series 方法提供最简单的异步流程控制机制，它将一个数组内的多个函数依次执行，
每个函数都将收到一个回调函数作为参数，在每个函数执行结束时，调用该回调，即可
进入下一个步骤，直到全部执行完毕，则调用一个 final 回调。

## 示例

```ts
import libAsync = require("libasync");

libAsync.series<Error>([

    function(next: libAsync.AsyncErrorCallback<Error>): void { // 异步回调 next

        console.info("[libasync.control.series] first step started");

        setTimeout(function(): void {

            console.info("[libasync.control.series] first step ended");

            next(); // 调用结束回调，进入下一步

            // 如果有错误，通过参数传递，终止整个异步过程

            // next(new Error("发生了错误"));

        }, 1000);
    },

    function(next: libAsync.AsyncErrorCallback<Error>): void { // 异步回调 next

        console.info("[libasync.control.series] second step started");

        setTimeout(function(): void {

            console.info("[libasync.control.series] second step ended");

            next(); // 调用结束回调，进入下一步

        }, 2000);
    },

    function(next: libAsync.AsyncErrorCallback<Error>): void { // 异步回调 next

        console.info("[libasync.control.series] third step started");

        setTimeout(function(): void {

            console.info("[libasync.control.series] third step ended");

            next(); // 调用结束回调，进入下一步

        }, 3000);
    }

], function(err?: Error): void {

    if (err) {

        console.error("[libasync.control.series] some error occured,", err);
    }
    else {

        console.info("[libasync.control.series] all series done,");
    }

});
```

如上，尝试编译运行，看看结果是否符合预期。

再把
