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

資訊專欄INFORMATION COLUMN

Promise與setTimeout的錯誤示范

Enlightenment / 1092人閱讀

錯誤寫法

export const checkSDK = () => {
    var timer = null;
    const start = Date.now();

    return new Promise((resolve, reject) => {
        if (typeof window.TigerBridge === "object") {
            resolve();
            return;
        }
        if (Date.now() - start <= 5 * 1000) {
            clearTimeout(timer);
            timer = setTimeout(checkSDK, 100);
            return;
        }

        reject();
    })
}

正確寫法

export const checkBridge = () => {
    var timer = null;
    const start = Date.now();

    function check(resolve, reject) {
        if (typeof window.TigerBridge === "object") {
            resolve();
            return true;
        } 
        if (Date.now() - start <= 5 * 1000) {
            clearTimeout(timer);
            timer = setTimeout(check.bind(null, resolve, reject), 100);
            return;
        }
        reject();
        return false;
    }

    return new Promise((resolve, reject) => check(resolve, reject))
}

模仿SDK注入過程,

if (process.env.NODE_ENV != "production") {
    setTimeout(() => {
        window.TigerBridge = {
            getAccessToken: () => {
                return pkg.token;
            },
            isAccountPermissionLimited: () => false
        };
    }, 1600);
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92266.html

相關文章

  • Eventloop不可怕,可怕是遇上Promise

    摘要:就是每次傳入的函數最后是的任務之后,開始執行,可以看到此時會批量執行中的函數,而且還給這些中回調函數放入了一個這個很顯眼的函數之中,表示這些回調函數是在微任務中執行的。下一模塊會對此微任務中的插隊行為進行詳解。 有關Eventloop+Promise的面試題大約分以下幾個版本——得心應手版、游刃有余版、爐火純青版、登峰造極版和究極變態版。假設小伙伴們戰到最后一題,以后遇到此類問題,都是...

    olle 評論0 收藏0
  • 前端er,你真會用 async 嗎?

    摘要:異步函數是值通過事件循環異步執行的函數,它會通過一個隱式的返回其結果。 async 異步函數 不完全使用攻略 前言 現在已經到 8012 年的尾聲了,前端各方面的技術發展也層出不窮,VueConf TO 2018 大會 也發布了 Vue 3.0的計劃。而在我們(我)的日常中也經常用 Vue 來編寫一些項目。那么,就少不了 ES6 的登場了。那么話說回來,你真的會用 ES6 的 asyn...

    Jaden 評論0 收藏0
  • Javascript事件循環入門到“忘記”(一).md

    摘要:中叫做調用棧先進后出,后進先出。如下圖這是典型的內存溢出,可能會出現在某些場景下需要遞歸,但業務邏輯中的判斷又沒能正常計算進入到預設情況,于是調用棧中不斷進入,又無法執行完,就造成內存溢出了。 本文主要介紹Javascript事件循環在瀏覽器上的一些特性和應用介紹。 Javascript小知識 JavaScript的并發模型基于事件循環(Event Loop)。這個模型與像C或者Jav...

    codeGoogle 評論0 收藏0
  • promise/deferred 模式原理分析和實現

    摘要:三模式模式其實包含兩部分和。六化在編碼的時候,想要用進行異步操作流程控制,就要將當前的異步回調函數封裝成。 一、什么是promise/deferred 模式 promise/deferred 模式是,根據promise/A 或者它的增強修改版promise/A+ 規范 實現的promise異步操作的一種實現方式。 異步的廣度使用使得回調,嵌套出現,但是一但出現深度的嵌套,就會讓codi...

    gclove 評論0 收藏0
  • Promise詳解

    摘要:等待十秒后代碼才算執行完畢常見用法將定時器和異步操作放在一起,如果定時器先觸發,則認為超時,告知用戶。 Promise介紹: 用于異步計算 將異步操作隊列化,按照期望的順序執行,返回符合預期的結果 可以在對象之間傳遞和操作promise,幫助我們處理隊列 由于promise是控制異步操作的,所以先來介紹一下在promise之前異步操作的常見語法。 事件偵聽與響應 回調函數(例如a...

    ckllj 評論0 收藏0

發表評論

0條評論

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