第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

角度$ scope。$ apply與$ timeout作為安全的$ apply

角度$ scope。$ apply與$ timeout作為安全的$ apply

猛跑小豬 2019-10-09 15:58:56
我試圖更好地理解在Angular中使用$ timeout服務(wù)作為一種“安全$ apply”方法的細(xì)微差別?;旧鲜窃诳梢皂憫?yīng)Angular事件或非Angular事件(例如jQuery或某些標(biāo)準(zhǔn)DOM事件)而運(yùn)行一段代碼的場(chǎng)景中。據(jù)我了解:在$ scope。$ apply中包裝代碼適用于您尚未處于摘要循環(huán)(又稱為jQuery事件)的情況,但如果正在進(jìn)行摘要?jiǎng)t將引發(fā)錯(cuò)誤在$ timeout()調(diào)用中包裝沒(méi)有延遲參數(shù)的代碼無(wú)論是否已經(jīng)在摘要周期中都有效查看Angular源代碼,看起來(lái)$ timeout調(diào)用了$ rootScope。$ apply()。如果摘要周期已經(jīng)在進(jìn)行中,為什么$ timeout()也不會(huì)引發(fā)錯(cuò)誤?最好的方法是使用$ scope。$ apply()(當(dāng)您確定摘要尚未進(jìn)行時(shí))和$ timeout()(當(dāng)需要以某種方式確保安全時(shí))?是$ timeout()確實(shí)可以接受的“安全應(yīng)用”,還是有陷阱?感謝您的見(jiàn)解。
查看完整描述

3 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

如果我們?cè)趹?yīng)用程序中大量使用$ apply,則可能會(huì)出現(xiàn)錯(cuò)誤:$ digest已經(jīng)在進(jìn)行中。這是因?yàn)榭梢砸淮芜\(yùn)行一個(gè)$ digest循環(huán)。我們可以通過(guò)$ timeout或$ evalAsync解決它。


$ timeout不會(huì)產(chǎn)生像“ $ digest已經(jīng)進(jìn)行中”之類的錯(cuò)誤,因?yàn)? timeout告訴Angular,在當(dāng)前周期之后,有一個(gè)超時(shí)等待,這樣可以確保摘要周期與$輸出之間不會(huì)發(fā)生任何沖突。超時(shí)將在新的$ digest周期執(zhí)行。


我嘗試在以下位置解釋它們:apply,timeout,digest和evalAsync的比較。


可能會(huì)對(duì)您有幫助。

查看完整回答
反對(duì) 回復(fù) 2019-10-09
?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

據(jù)我了解,它$timeout是一個(gè)包裝器,在setTimeout其周圍隱式調(diào)用$scope.$apply,這意味著它在角度生命周期之外運(yùn)行,但會(huì)啟動(dòng)角度生命周期本身。我能想到的唯一“陷阱”是,如果您希望結(jié)果可用this $digest,則需要找到另一種“安全應(yīng)用”的方法(AFAIK僅可通過(guò)訪問(wèn)$scope.$$phase)。


查看完整回答
反對(duì) 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 587 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)