本篇內(nèi)容主要講解“Angular和SAP C4C的事件處理隊(duì)列分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Angular和SAP C4C的事件處理隊(duì)列分析”吧!
創(chuàng)新互聯(lián)公司專注于邗江網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供邗江營銷型網(wǎng)站建設(shè),邗江網(wǎng)站制作、邗江網(wǎng)頁設(shè)計(jì)、邗江網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造邗江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供邗江網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
我們在Angular框架的代碼里能看到一個(gè)名為processQueue的函數(shù):
這個(gè)函數(shù)是通過apply啟動(dòng)的:
核心代碼位于一個(gè)for循環(huán)里,循環(huán)體是一個(gè)存儲異步處理任務(wù)的隊(duì)列asyncQueuePosition:
for (var asyncQueuePosition = 0; asyncQueuePosition < asyncQueue.length; asyncQueuePosition++) {try { asyncTask = asyncQueue[asyncQueuePosition]; fn = asyncTask.fn; fn(asyncTask.scope, asyncTask.locals); } catch (e) { $exceptionHandler(e); } lastDirtyWatch = null; }
隊(duì)列里每個(gè)元素長這樣的:一個(gè)處理函數(shù)fn,一個(gè)局部變量locals和scope對象:
這個(gè)注釋也非常有用:一旦Angular發(fā)現(xiàn)由apply觸發(fā)的JavaScript執(zhí)行序列里又出現(xiàn)了apply的嵌套調(diào)用,會拋出錯(cuò)誤消息:$digest already in progress
// It's safe for asyncQueuePosition to be a local variable here because this loop can't
// be reentered recursively. Calling evalAsync would
// lead to a '$digest already in progress' error.
C4C的事件處理器,EventProcessor.js有一個(gè)事件隊(duì)列:
該隊(duì)列的實(shí)現(xiàn)位于sap/client/evt/的OperationQueue.js中:
隨便在C4C UI做一個(gè)點(diǎn)擊,能觸發(fā)EventProcessor的_processQueue,C4C事件隊(duì)列的處理和Angular思路一樣,只不過是一個(gè)while循環(huán)替代了Angular的for循環(huán):
C4C事件隊(duì)列里每個(gè)元素屬性如下,可以同Angular事件元素做對比:
fFunc就相當(dāng)于Angular時(shí)間元素的fn屬性,environment相當(dāng)于Angular事件元素的scope屬性。
到此,相信大家對“Angular和SAP C4C的事件處理隊(duì)列分析”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!