自制前端框架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

    目前的evalAsync机制 就是在每次$digestOnce以后执行一下async队列内的eval函数。可是目前...

  • 自制前端框架Day21 $evalAsync的实现

    $evalAsync是什么 顾名思义,延迟执行一段作用于相应scope的eval代码。于timeout的区别是,t...

  • 自制前端前端框架 Day17. 完善digest

    如果digest遇到了死循环该如何处理 假设有两个watcher,在digest的时候互相更改对方的值,这会导致d...

  • 自制前端前端框架 Day19. 完善脏值检测

    现在脏值检测还有什么问题? 目前的脏值检测只能检测基本的值,比如string和Number。看一个测试案例: 这个...

  • 自制简易前端MVC框架

    周末花了大概7小时写了一个简易的响应式blog,原意是练习css的,写着写着却去实现了一套前端路由并渲染的东西,这...

  • Bootstrap - 全局样式

    学习Bootstrap之前,传统前端开发过程中的问题: Bootstrap作为一套完善的前端样式框架:为我们提供了...

  • 前端框架模式的变迁

    前言 前端框架的变迁,体系架构的完善,使得我们只知道框架,却不明白它背后的道理。我们应该抱着一颗好奇心,在探索框架...

  • Vue 2.0 从初始化到编译打包发布

    说明前端 vue 框架不知不觉就这样火起来了,生态圈也是逐渐在完善,后台也是彻底分离了数据给前端,就类似ios 和...

  • 迅雷前端实习生招聘

    岗位介绍 1.负责迅雷(PC端/移动端)前端业务开发和优化 2.负责前端业务框架、工具链的不断完善 在这里,你可以...

  • 通过样例来理解 MVC 模式

    参考: 自制前端框架之 MVC参考: MVC,MVP 和 MVVM 的图示 如何设计一个程序的结构,这是一门专门的...

网友评论

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

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