JS中Promise 的使用

class A:

    public static testFunc(): (() => Promise<boolean>)[]
    {
        cc.log("进入第一层Promise")
        let tempLoadTemplates = [
            ["First Func",  function() {    cc.log("this is function 1");} ],
            ["Second Func", function() {    cc.log("this is function 2");}  ],
            ["Thrid Func",  function() {    cc.log("this is function 3");}  ],
            ["Fouth Func",  function() {    cc.log("this is function 4");}  ],
        ];

        let testPrmise : (()=>Promise<boolean>)[] = [];

        for (var i = 0; i != 4; i++)
        {
            cc.log("I 的值为 : " + i);
            const TempTable = tempLoadTemplates[i];
            const name      = TempTable[0];
            const fuc       = TempTable[1];
            const ci        = i;
            testPrmise.push(() => {
                return new Promise<boolean>(async (completed, failed) => {
                    cc.log("这是第一层Pormis ====>" + "Step : " + ci); //==>输出正常
                    cc.log("这是第一层Pormis ====>" + "Step : " + i); //==>输出 4
                    //结论 对于Promise中的闭包参数传值 必须用const 修饰符 否则将被赋值为最后一次设定的值


                    //这边就可以在这里让TestFunction做相应的操作
                    //比如读取数据 等等
                    await this.TestFunction(name, fuc);
                    if (i % 2 == 0)
                        completed(true);
                    else failed("Do Failed");
                })
            });
        }
        cc.log("压入完毕!");
        cc.log(testPrmise);
        return testPrmise;
    }

    private static TestFunction(name, functionAddr)
    {
        cc.log(name);
        functionAddr();
    }


class B:


JS中Promise 的使用

JS中Promise 的使用