自制前端框架Day22.完善evalAsync

目前的evalAsync机制

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

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

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

image.png

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

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

image.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,838评论 19 139
  • 背景 担心了两周的我终于轮到去医院做胃镜检查了!去的时候我都想好了最坏的可能(胃癌),之前在网上查的症状都很相似。...
    Dely阅读 13,037评论 21 42
  • GCD简介 GCD 是 libdispatch 的市场名称,而 libdispatch 作为 Apple 的一个库...
    独木舟的木阅读 5,123评论 0 5
  • 41.多用派发队列,少用同步锁 在Objective-C中,如果有多个线程要执行同一份代码,那么有时可能会出问题。...
    Code_Ninja阅读 4,889评论 1 13
  • #幸福是需要修出来的~每天进步1%~幸福实修13班~18号贾双红# 20171225(28/60) 【幸福三朵玫瑰...
    幸福实修贾双红阅读 1,441评论 1 3

友情链接更多精彩内容