nodejs async 测试

2023-05-25 09:32:47 浏览数 (2)

async 测试一个:当await一个async函数时,只await这个函数的一部分,另一部分不await

代码语言:typescript复制
    async function entrance(type: string, handler: any, ...args: string[]) {
        console.log(moment().unix(), '11111 entrance start');
        await wait(2000);
        return handler(...args);
    }

    async function type1Func() {
        console.log(moment().unix(), '11111 type1Func start');
        const r = await wait(5000);
        console.log(moment().unix(), '11111 type1Func end');
        return 1;
    }

测试几种调用方式:

代码语言:typescript复制
await entrance('type1Func', type1Func)
await entrance('type1Func', () => type1Func())   // 和下面一样
await entrance('type1Func', () => {return type1Func()}) // 和上面一样
await entrance('type1Func', () => {type1Func()})


// Main function
    console.log(moment().unix(), '11111 main process start');
    const r = await entrance('type1', wrapFunc); // 先测试第1种,再换第4种。
    console.log(moment().unix(), '11111 main process end', r);

第1种结果:

代码语言:txt复制
1683690391 11111 main process start
1683690391 11111 entrance start
1683690393 11111 type1Func start
1683690398 11111 type1Func end
1683690398 11111 main process end 1

第4种结果:

代码语言:txt复制
1683690434 11111 main process start
1683690434 11111 entrance start
1683690436 11111 type1Func start
1683690436 11111 main process end undefined
1683690441 11111 type1Func end

结论是:当不在乎async函数返回结果时,通过 () => { type1Func() } 可以变成normal函数了,执行完就走,不会await。如果需要返回结果,这样 () => { return type1Func() } 那还是会await等待。

0 人点赞