[發(fā)明專利]一種基于JS的執(zhí)行上下文獲取方法及相關(guān)裝置在審
| 申請?zhí)枺?/td> | 202011584600.9 | 申請日: | 2020-12-28 |
| 公開(公告)號: | CN112732238A | 公開(公告)日: | 2021-04-30 |
| 發(fā)明(設(shè)計)人: | 張勇 | 申請(專利權(quán))人: | 上海微盟企業(yè)發(fā)展有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F8/41 |
| 代理公司: | 北京集佳知識產(chǎn)權(quán)代理有限公司 11227 | 代理人: | 王云曉 |
| 地址: | 200441 上海市寶山*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 js 執(zhí)行 上下文 獲取 方法 相關(guān) 裝置 | ||
1.一種基于JS的執(zhí)行上下文獲取方法,其特征在于,包括:
攔截異步代碼;
在攔截所述異步代碼之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文,同時返回一內(nèi)部函數(shù);
在調(diào)用所述包裹函數(shù)之后,執(zhí)行所述異步代碼;
當(dāng)觸發(fā)所述異步代碼的異步事件時,將所述內(nèi)部函數(shù)壓入執(zhí)行棧,通過所述內(nèi)部函數(shù)讀取所述內(nèi)部變量以形成閉包;
基于所述閉包讀取保存的所述執(zhí)行上下文。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述攔截異步代碼包括:
攔截回調(diào)函數(shù);
所述在攔截所述異步代碼之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文,同時返回一內(nèi)部函數(shù)包括:
在攔截所述回調(diào)函數(shù)之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文,同時返回一內(nèi)部函數(shù);
所述在調(diào)用所述包裹函數(shù)之后,執(zhí)行所述異步代碼包括:
調(diào)用所述包裹函數(shù)之后,執(zhí)行所述回調(diào)函數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述基于所述閉包讀取保存的所述執(zhí)行上下文包括:
基于詞法作用域鏈讀取保存在所述閉包的閉包作用域鏈中的所述執(zhí)行上下文。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在攔截所述異步代碼之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文,同時返回一內(nèi)部函數(shù)包括;
在攔截所述異步代碼之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文的標(biāo)識信息,同時返回一內(nèi)部函數(shù);
所述基于所述閉包讀取保存的所述執(zhí)行上下文包括:
基于所述閉包內(nèi)保存的所述標(biāo)識信息讀取對應(yīng)的執(zhí)行上下文。
5.一種基于JS的執(zhí)行上下文獲取裝置,其特征在于,包括:
攔截模塊:用于攔截異步代碼;
包裹函數(shù)模塊:用于在攔截所述異步代碼之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文,同時返回一內(nèi)部函數(shù);
代碼執(zhí)行模塊:用于在調(diào)用所述包裹函數(shù)之后,執(zhí)行所述異步代碼;
閉包模塊:用于當(dāng)觸發(fā)所述異步代碼的異步事件時,將所述內(nèi)部函數(shù)壓入執(zhí)行棧,通過所述內(nèi)部函數(shù)讀取所述內(nèi)部變量以形成閉包;
讀取模塊:用于基于所述閉包讀取保存的所述執(zhí)行上下文。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述攔截模塊具體用于:
攔截回調(diào)函數(shù);
所述包裹函數(shù)模塊具體用于:
在攔截所述回調(diào)函數(shù)之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文,同時返回一內(nèi)部函數(shù);
所述代碼執(zhí)行模塊具體用于:
調(diào)用所述包裹函數(shù)之后,執(zhí)行所述回調(diào)函數(shù)。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述讀取模塊具體用于:
基于詞法作用域鏈讀取保存在所述閉包的閉包作用域鏈中的所述執(zhí)行上下文。
8.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述包裹函數(shù)模塊具體用于;
在攔截所述異步代碼之后,調(diào)用包裹函數(shù),基于所述包裹函數(shù)中的內(nèi)部變量保存當(dāng)前的執(zhí)行上下文的標(biāo)識信息,同時返回一內(nèi)部函數(shù);
所述讀取模塊具體用于:
基于所述閉包內(nèi)保存的所述標(biāo)識信息讀取對應(yīng)的執(zhí)行上下文。
9.一種基于JS的執(zhí)行上下文獲取設(shè)備,其特征在于,所述設(shè)備包括:
存儲器:用于存儲計算機程序;
處理器:用于執(zhí)行所述計算機程序時實現(xiàn)如權(quán)利要求1至4任一項所述基于JS的執(zhí)行上下文獲取方法的步驟。
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至4任一項所述基于JS的執(zhí)行上下文獲取方法的步驟。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海微盟企業(yè)發(fā)展有限公司,未經(jīng)上海微盟企業(yè)發(fā)展有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011584600.9/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- JS文件處理方法和裝置
- 一種JS代碼的測試方法、存儲介質(zhì)、設(shè)備和系統(tǒng)
- 一種JS代碼的測試方法、存儲介質(zhì)、設(shè)備和系統(tǒng)
- 分布式的JS文件篡改監(jiān)控方法、系統(tǒng)、設(shè)備及存儲介質(zhì)
- 在IOS應(yīng)用內(nèi)調(diào)用函數(shù)的方法及系統(tǒng)
- 一種可擴展的游戲構(gòu)建方法、游戲運行方法和存儲介質(zhì)
- 一種提高腳本的加載效率的方法及終端
- 一種應(yīng)用程序依賴的JS代碼與原生庫兼容的方法及終端
- JS代碼防重復(fù)注入方法、裝置、計算機設(shè)備及存儲介質(zhì)
- 原生應(yīng)用調(diào)用JS的方法、裝置、電子設(shè)備及存儲介質(zhì)
- 以注射方式執(zhí)行死刑的自動執(zhí)行車的執(zhí)行床
- 過程執(zhí)行裝置、過程執(zhí)行方法以及過程執(zhí)行程序
- 用以執(zhí)行跳舞電子游戲的執(zhí)行系統(tǒng)及其執(zhí)行方法
- 策略執(zhí)行系統(tǒng)及其執(zhí)行方法
- 腳本執(zhí)行系統(tǒng)和腳本執(zhí)行方法
- 命令執(zhí)行設(shè)備、命令執(zhí)行系統(tǒng)、命令執(zhí)行方法以及命令執(zhí)行程序
- 程序執(zhí)行裝置、程序執(zhí)行系統(tǒng)以及程序執(zhí)行方法
- 處理執(zhí)行設(shè)備和由該處理執(zhí)行設(shè)備執(zhí)行的方法
- 有序任務(wù)的執(zhí)行方法、執(zhí)行裝置和執(zhí)行系統(tǒng)
- 執(zhí)行器(閥門執(zhí)行器)





