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

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

關(guān)于React源碼中一些全局變量用意有些疑問(wèn),貼了關(guān)于 isRendering 全局變量的代碼,有沒(méi)有幫忙解答一下的?

關(guān)于React源碼中一些全局變量用意有些疑問(wèn),貼了關(guān)于 isRendering 全局變量的代碼,有沒(méi)有幫忙解答一下的?

一身三影 2019-07-03 15:37:04
如題,比如 ReactFilberScheduler.js? 中有一個(gè)全局變量 isRendering 變量在 requestWork? 和 performWorkOnRoot 方法中有用到,requestWork 函數(shù)開(kāi)頭判斷當(dāng) isRendering = true 的直接返回return;而在?performWorkOnRoot 的開(kāi)頭將?isRendering 置為 true? 而在末尾置為 false,那么問(wèn)題來(lái)了? requestWork? 的開(kāi)頭對(duì) isRendering 的判斷有什么意義?function requestWork(root: FiberRoot, expirationTime: ExpirationTime) {? addRootToSchedule(root, expirationTime);? if (isRendering) {? ? // Prevent reentrancy. Remaining work will be scheduled at the end of? ? // the currently rendering batch.? ? return;? }? //....Omitted code}function performWorkOnRoot(root: FiberRoot, expirationTime: ExpirationTime, isExpired: boolean) {? invariant(? ? !isRendering,? ? 'performWorkOnRoot was called recursively. This error is likely caused ' +? ? ? 'by a bug in React. Please file an issue.',? );? isRendering = true; ? //...Omitted code? isRendering = false;}
查看完整描述

3 回答

?
pardon110

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

很顯然只是個(gè)標(biāo)志位,控制代碼執(zhí)行流程,在一些異步執(zhí)行需要同步代碼的情況下用到。你需要知道,代碼并不總是從上到下逐行執(zhí)行,而異步執(zhí)行在js中是常態(tài)

查看完整回答
反對(duì) 回復(fù) 2019-07-03
  • 一身三影
    一身三影
    這些方法不是在同一個(gè)線程執(zhí)行么,同一個(gè)線程加這種標(biāo)志位并沒(méi)有什么實(shí)際的用處吧
  • 一身三影
    一身三影
    requestWork 和 performWorkOnRoot 在同一個(gè)線程執(zhí)行,那么requestWork中 isRendering 永遠(yuǎn)不會(huì)為 true
  • 3 回答
  • 0 關(guān)注
  • 1483 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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