探讨,关于流程控制的代码设计

有N个不同的动画,播出时机是在一个范围里。这N个动画都播放完成后才能进入下一个流程。

如何控制进入下一个流程?这块的代码怎么设计比较好呢?

promise

1赞

代码是一步步来的,先动手

let anim = '一个动画';
let completeCount = N;
anim.onComplete(()=>{
       completeCount--;
});
// TODO 重复剩下的动画
update(){
      if(completeCount == 0) {
               completeCount = -1;
               // TODO 进入下一个流程
      }
}

当你看得不爽或者要重复工作时,那你就想想怎么优化吧,比如多个动画难得写那用for循环、update不够优雅,那completeCount这个方法使用触发方式

let anims = [a,b....];
for(let i = 0; i< anims.length; i++){
      anims[i].onComplete(()=>{
           completeCount--;
      });
}
get completeCount(){
      return _completeCount;
}
set completeCount(count){
      _completeCount = count;
     if(count == 0) {
        // 下个流程
     }
}

如果你没有可选的方案,那么先动手,后优化

以上为伪代码,不对期能否运行以及能否达到预期负责

1赞

哇塞偶像 :heart_eyes:原来属性寄存器还可以这样用的,我之前还以为拿来赋值而已