摘要:文章起因今天在學習一個的測試框架中,在閱讀文檔時看到用來判斷是否支持函數的代碼。
文章起因
今天在學習Jasmine(一個Javascript的測試框架)中,在閱讀文檔時看到用來判斷是否支持async函數的代碼。
// 獲取async函數的原型的構造器 function getAsyncCtor() { try { eval("var func = async function(){};"); } catch (e) { return null; } return Object.getPrototypeOf(func).constructor; } // 如果getAsyncCtor() 結果為null,說明運行時不支持async函數 function browserHasAsyncAwaitSupport() { return getAsyncCtor() !== null; }
讓我們簡化代碼,基于上面的代碼我們可以將其合并成為一個函數
function isAsyncAwaitSupport() { let func; try { eval("func = async function(){};"); } catch (e) { return false; } // 由于async函數的構造器不是全局對象,所以我們需要由下面代碼來獲取async函數的構造器 // 具體可以查看以下MDN上有關于AsyncFunction的說明, // 地址:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction return Object.getPrototypeOf(func).constructor != null; }
npm上其實已經有了一個庫用來判斷運行時是否支持async/await了,叫is-async-supported,但是因為依賴著nodejs平臺的vm內置庫,無法運行在非nodejs平臺。以下是它的代碼:
const vm = require("vm") module.exports = function checkAsyncAwait () { try { new vm.Script("(async () => ({}))()") return true } catch (e) { return false } }is-async-await-supported
而我們剛才編寫的函數不依賴于nodejs平臺,所以可以運行在任意JavaScript運行時中,比is-async-supported庫更加通用。
目前我已經將這個模塊發布到npm上面去了,名字叫is-async-await-supported,代碼采用TypeScript編寫,已經通過webpack轉義成了UMD模塊和ES6模塊,你可以在瀏覽器和nodejs中使用它,你只需通過下述命令安裝即可,目前使用文檔已經更新好了,使用是否簡單,你只需照著文檔做就可以了。
文檔地址:https://www.npmjs.com/package...
npm install --save is-async-await-supported
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100029.html
摘要:但有些時候我們可能需要知道現在某個到底是否為運行時環境所原生支持,還是代碼支持的。今天在學習版本的源代碼時,就發現了中也有用來檢測一個函數是否為運行時原生支持。 在開發過程中,對于某些API在現有的JavaScript運行時環境不支持的時候,我們大都會采用加入polyfill來解決這個問題。但有些時候我們可能需要知道現在某個API到底是否為運行時環境所原生支持,還是polyfill代碼...
摘要:爬蟲介紹二爬蟲的分類通用網絡爬蟲全網爬蟲爬行對象從一些種子擴充到整個,主要為門戶站點搜索引擎和大型服務提供商采集數據。 分分鐘教你用node.js寫個爬蟲 寫在前面 十分感謝大家的點贊和關注。其實,這是我第一次在segmentfault上寫文章。因為我也是前段時間偶然之間才開始了解和學習爬蟲,而且學習node的時間也不是很長。雖然用node做過一些后端的項目,但其實在node和爬蟲方面...
摘要:最受歡迎的引擎是,在和中使用,用于,以及所使用的。單線程的我們說是單線程的,因為有一個調用棧處理我們的函數。也就是說,如果有其他函數等待執行,函數是不能離開調用棧的。每個異步函數在被送入調用棧之前必須通過回調隊列。 翻譯:瘋狂的技術宅原文:https://www.valentinog.com/bl... 本文首發微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 sh...
摘要:使用指令代替查詢每一個指令都可以在它的構造器中注入引用。讓我們聲明這樣一個指令我已經在構造器中添加了檢查代碼來保證視圖容器在指令實例化的時候是可用的。 原文:https://blog.angularindepth.c...作者:Max Koretskyi譯者:而井 【翻譯】教你如何在@ViewChild查詢之前獲取ViewContainerRef showImg(https://se...
閱讀 3069·2021-10-12 10:12
閱讀 1575·2021-09-09 11:39
閱讀 1906·2019-08-30 15:44
閱讀 2346·2019-08-29 15:23
閱讀 2902·2019-08-29 15:18
閱讀 2969·2019-08-29 13:02
閱讀 2693·2019-08-26 18:36
閱讀 741·2019-08-26 12:08