自制前端框架Day22.完善evalAsync

目前的evalAsync機制

就是在每次$digestOnce以后執行一下async隊列內的eval函數。可是目前有一個問題:就是只有在臟值為true的時候才會去執行這個隊列中的內容:

畫紅圈的部分為真才會進行下一次循環

也就是說,如果我的scope是干凈的,就算我的async隊列中有內容,也不會執行。那么解決這個問題的思路很簡單,就是我要判斷一下,async隊列中是否有內容,有內容就要執行掉。
所以很容易改,改成下面這樣:

image.png

但是仍然是有問題的:如果我每次digestOnce的時候都往隊列里增加一個要執行的函數(比如我在watchFn里面添加函數,因為每次digestOnce的時候watchFn都會被執行),那么這個循環將變成死循環。

所以相應的解決方式是,在ttl檢查的時候,也要把async檢查進去,變成這樣:

image.png

這樣一來,問題就解決了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 背景 擔心了兩周的我終于輪到去醫院做胃鏡檢查了!去的時候我都想好了最壞的可能(胃癌),之前在網上查的癥狀都很相似。...
    Dely閱讀 9,277評論 21 42
  • GCD簡介 GCD 是 libdispatch 的市場名稱,而 libdispatch 作為 Apple 的一個庫...
    獨木舟的木閱讀 1,302評論 0 5
  • 41.多用派發隊列,少用同步鎖 在Objective-C中,如果有多個線程要執行同一份代碼,那么有時可能會出問題。...
    Code_Ninja閱讀 1,179評論 1 13
  • #幸福是需要修出來的~每天進步1%~幸福實修13班~18號賈雙紅# 20171225(28/60) 【幸福三朵玫瑰...
    幸福實修賈雙紅閱讀 185評論 1 3