jsonp的promise封裝

/*
    @url 請(qǐng)求地址
    @超時(shí)時(shí)間
    @return promise
*/
var getJSONP =  function(url, overtime) {
  var promise = new Promise(function(resolve, reject) {
    //注冊(cè)回調(diào)函數(shù)
    var callbackName = 'jsonp'+Math.ceil(Math.random() * 1000000);
      window[callbackName] = function(json) {
      head.removeChild(script);    //移除scipt標(biāo)簽
      clearTimeout(script.timer);  //清除超時(shí)計(jì)時(shí)器
      window[callbackName] = null;
      resolve(json);   //成功處理
    }
    //生成scipt標(biāo)簽
    var script = document.createElement('script');
    script.src = url;  
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(script);
    //錯(cuò)誤處理
    script.onerror = function(){  
        if(window[callbackName] == null){  
            reject('timeout');   //超時(shí)處理
        }  else{
            reject('faild');   //失敗處理
            window[callbackName] = null;
          head.removeChild(script);
        }
    }  
    //超時(shí)判斷
    script.timer = setTimeout(function () {
        window[callbackName] = null;
        head.removeChild(script);
    }, overtime);
  });
  return promise;
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容