国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

而井教你判斷當前Javascript運行環境是否支持async函數

hot_pot_Leo / 1803人閱讀

摘要:文章起因今天在學習一個的測試框架中,在閱讀文檔時看到用來判斷是否支持函數的代碼。

文章起因

今天在學習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

相關文章

  • 教你如何檢查一個函數是否JavaScript運行環境內建函數

    摘要:但有些時候我們可能需要知道現在某個到底是否為運行時環境所原生支持,還是代碼支持的。今天在學習版本的源代碼時,就發現了中也有用來檢測一個函數是否為運行時原生支持。 在開發過程中,對于某些API在現有的JavaScript運行時環境不支持的時候,我們大都會采用加入polyfill來解決這個問題。但有些時候我們可能需要知道現在某個API到底是否為運行時環境所原生支持,還是polyfill代碼...

    miya 評論0 收藏0
  • 分分鐘教你用node.js寫個爬蟲

    摘要:爬蟲介紹二爬蟲的分類通用網絡爬蟲全網爬蟲爬行對象從一些種子擴充到整個,主要為門戶站點搜索引擎和大型服務提供商采集數據。 分分鐘教你用node.js寫個爬蟲 寫在前面 十分感謝大家的點贊和關注。其實,這是我第一次在segmentfault上寫文章。因為我也是前段時間偶然之間才開始了解和學習爬蟲,而且學習node的時間也不是很長。雖然用node做過一些后端的項目,但其實在node和爬蟲方面...

    fanux 評論0 收藏0
  • JavaScript引擎是如何工作的?從調用棧到Promise你需要知道的一切

    摘要:最受歡迎的引擎是,在和中使用,用于,以及所使用的。單線程的我們說是單線程的,因為有一個調用棧處理我們的函數。也就是說,如果有其他函數等待執行,函數是不能離開調用棧的。每個異步函數在被送入調用棧之前必須通過回調隊列。 翻譯:瘋狂的技術宅原文:https://www.valentinog.com/bl... 本文首發微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 sh...

    Simon_Zhou 評論0 收藏0
  • 教你如何在@ViewChild查詢之前獲取ViewContainerRef

    摘要:使用指令代替查詢每一個指令都可以在它的構造器中注入引用。讓我們聲明這樣一個指令我已經在構造器中添加了檢查代碼來保證視圖容器在指令實例化的時候是可用的。 原文:https://blog.angularindepth.c...作者:Max Koretskyi譯者:而井 【翻譯】教你如何在@ViewChild查詢之前獲取ViewContainerRef showImg(https://se...

    suxier 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<