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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將同步代碼轉換為異步代碼

將同步代碼轉換為異步代碼

犯罪嫌疑人X 2022-12-09 15:16:36
我正在學習開發(fā) chrome 擴展(同時也在學習 javascript)。我正在試驗在 youtube 網頁上運行的擴展。事情是當我滾動時,有時網頁有點緊張。于是,我開始尋找可能的原因。我看到了一些不錯的視頻,包括Philip Roberts 的“事件循環(huán)到底是什么”,他在視頻中談到了事件循環(huán)和其他相關內容。這讓我想知道是否正是因為這個原因,網頁才會感到緊張。內容腳本中的代碼是同步的,我對 javascript 中的異步編碼沒有太多經驗。promises,之類的概念async/await對我來說是新的。這是內容腳本中非常高級別的代碼。chrome.storage.sync.get(); // getting some data herelet activateButton = document.createElement("div");activateButton.id = "activate-ext";activateButton.addEventListener("click", getData);有一個對 chrome 存儲 api 的調用一些代碼來呈現(xiàn)一個按鈕(有一個click事件監(jiān)聽器附加到這個呈現(xiàn)另一個 UI 的按鈕。)然后我將這個按鈕添加到 dom現(xiàn)在,大部分事情都發(fā)生在getData回調中。當用戶單擊該按鈕時。擴展名:從網頁檢索數(shù)據(jù)并進行一些正則表達式匹配,然后將我想要的字符串值存儲在一個數(shù)組a中。然后當我有數(shù)組時a,我map在它上面使用一個來創(chuàng)建另一個數(shù)組b然后對的所有元素進行另一個操作b以獲得另一個數(shù)組c。現(xiàn)在終于有了數(shù)組c,我調用了另一個生成最終 UI 的函數(shù)(使用數(shù)組中的值c)這getData看起來像:function getdata(){    const regex = /some_regex/g;    let match = regex.exec(data);    while (match) {            a.push(match[index]);            match = regex.exec(description)        }    b = createAnotherArray(a) // this function returns array b     c = anotherOperation(b)     generateUI(c) // in this function I am rendering the UI}現(xiàn)在,所有這些代碼都是同步的(除了調用 chrome 存儲 API 和一些回調),我相信其中一些操作(如正則表達式匹配)需要時間來阻止事件循環(huán)。那么使用 promises(async/await) 重構整個代碼的最佳方式是什么,這樣它就不會阻止瀏覽器呈現(xiàn)/更新 UI。我也看到了一些循環(huán)async/await,我的代碼中也有循環(huán)。那么,我也需要這樣做嗎?
查看完整描述

1 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

JavaScript 是單線程的。包括事件循環(huán) - 簡單地說,它只是一個用于放入其中的任務的隊列。如果您的 JS 代碼實際上導致了性能問題,那么異步執(zhí)行某些操作將無濟于事,因為從那時起,該代碼無論如何都會阻塞事件循環(huán)。

唯一可用的選項是Web workers。


查看完整回答
反對 回復 2022-12-09
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號