关于异步逻辑的“锁”

很多时候为了不重复弹动画,或者是保证异步执行逻辑的旧状态不要覆盖新状态,我们会写类似这样的一段代码:

const playAnimationAsync = async () => {
    const lock = ++skin.animIndex;
    const tasks = [];
    // Add Animation Tasks...
    await Promise.all(tasks);
    if (lock == skin.animIndex) {
        skin.reset();
    }
}

想请教一下有更好的解决思路?或者写法吗?

能跑就是最好的

https://forum.cocos.org/t/topic/129637
把它封装成一个对象
或者做成一个counter
https://forum.cocos.org/t/topic/129642