无限重复同步任务出现Bug(无尽递归too much recursion)

来源:3-3 课程总结

WenzelLin

2017-04-12 18:48

学习了,感谢慕课!!

测试后发现

-.-

无限重复bug:当一个任务类型为同步类型,并且在任务中没有释放资源(即该任务不是最后一个任务,并且是同步任务),其下一个任务为无限重复(repeatForever)时,出现无尽递归错误(too much recursion)。

-.-

我觉得应该设计成这样吧-_-||:不能无限重复同步任务,或者不采用递归的方式执行任务链,而是采用循环的方式执行。


写回答 关注

1回答

  • 环球学习机
    2018-05-26 14:20:44

    我不知道为什么没有人回答你。基本上是你的代码有问题。另外可以在跟你解释一下:

    1、首先在这里实现的异步任务只能针对于动画任务内部的timeline与这个任务执行的其他代码块(这里应该没有,可以自己去理解一下这个动画的整体实现),不要将任务链上的其他任务扯进去(因为这个任务链上的每个任务相对于前一个任务都是同步任务);举个中间的例子:如果重复一个动画,那重复的每一次动画相对于前一次动画都是一个同步任务(重复的动画必须等到前一次动画执行结束才能执行)。

    2、就是你说的“不能无限重复同步任务,或者不采用递归的方式执行任务链,而是采用循环的方式。”这里不能无限重复同步任务与递归没有关系。首先你说的循环整个任务链,你可能只是想针对重复的动画任务,有没有考虑到其他的任务。还有你得考虑整个任务链的任务执行都是采用函数调用另一个函数,如果将动画的重复部分改为你所说的以迭代的方式循环执行:一个是不符合这里任务执行方式,二是会造成动画执行冲突(因为你所有重复的动画是几乎一起执行的)。

    说了很多你得明白老师这里的写法,动画本身虽然是个异步的,但要让异步的动画的重复变成同步。

    当然我的答案不知道对否,仅供参考

原生 JS 实现帧动画库

了解如何用原生JS实现酷炫的帧动画,吸引他她的注意

47188 学习 · 92 问题

查看课程

相似问题