自制前端框架Day22.完善evalAsync

作者: 蚊子爸爸 | 来源:发表于2017-07-04 10:01 被阅读24次

    目前的evalAsync机制

    就是在每次$digestOnce以后执行一下async队列内的eval函数。可是目前有一个问题:就是只有在脏值为true的时候才会去执行这个队列中的内容:

    画红圈的部分为真才会进行下一次循环

    也就是说,如果我的scope是干净的,就算我的async队列中有内容,也不会执行。那么解决这个问题的思路很简单,就是我要判断一下,async队列中是否有内容,有内容就要执行掉。
    所以很容易改,改成下面这样:

    image.png

    但是仍然是有问题的:如果我每次digestOnce的时候都往队列里增加一个要执行的函数(比如我在watchFn里面添加函数,因为每次digestOnce的时候watchFn都会被执行),那么这个循环将变成死循环。

    所以相应的解决方式是,在ttl检查的时候,也要把async检查进去,变成这样:

    image.png

    这样一来,问题就解决了。

    相关文章

      网友评论

        本文标题:自制前端框架Day22.完善evalAsync

        本文链接:https://www.haomeiwen.com/subject/adythxtx.html