成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Promise與setTimeout的錯(cuò)誤示范

Enlightenment / 1159人閱讀

錯(cuò)誤寫(xiě)法

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();
    })
}

正確寫(xiě)法

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注入過(guò)程,

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/92266.html

相關(guān)文章

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

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

    olle 評(píng)論0 收藏0
  • 前端er,你真會(huì)用 async 嗎?

    摘要:異步函數(shù)是值通過(guò)事件循環(huán)異步執(zhí)行的函數(shù),它會(huì)通過(guò)一個(gè)隱式的返回其結(jié)果。 async 異步函數(shù) 不完全使用攻略 前言 現(xiàn)在已經(jīng)到 8012 年的尾聲了,前端各方面的技術(shù)發(fā)展也層出不窮,VueConf TO 2018 大會(huì) 也發(fā)布了 Vue 3.0的計(jì)劃。而在我們(我)的日常中也經(jīng)常用 Vue 來(lái)編寫(xiě)一些項(xiàng)目。那么,就少不了 ES6 的登場(chǎng)了。那么話說(shuō)回來(lái),你真的會(huì)用 ES6 的 asyn...

    Jaden 評(píng)論0 收藏0
  • Javascript事件循環(huán)入門(mén)到“忘記”(一).md

    摘要:中叫做調(diào)用棧先進(jìn)后出,后進(jìn)先出。如下圖這是典型的內(nèi)存溢出,可能會(huì)出現(xiàn)在某些場(chǎng)景下需要遞歸,但業(yè)務(wù)邏輯中的判斷又沒(méi)能正常計(jì)算進(jìn)入到預(yù)設(shè)情況,于是調(diào)用棧中不斷進(jìn)入,又無(wú)法執(zhí)行完,就造成內(nèi)存溢出了。 本文主要介紹Javascript事件循環(huán)在瀏覽器上的一些特性和應(yīng)用介紹。 Javascript小知識(shí) JavaScript的并發(fā)模型基于事件循環(huán)(Event Loop)。這個(gè)模型與像C或者Jav...

    codeGoogle 評(píng)論0 收藏0
  • promise/deferred 模式原理分析和實(shí)現(xiàn)

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

    gclove 評(píng)論0 收藏0
  • Promise詳解

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

    ckllj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<