/*
@url 請求地址
@超時時間
@return promise
*/
var getJSONP = function(url, overtime) {
var promise = new Promise(function(resolve, reject) {
//注冊回調函數
var callbackName = 'jsonp'+Math.ceil(Math.random() * 1000000);
window[callbackName] = function(json) {
head.removeChild(script); //移除scipt標簽
clearTimeout(script.timer); //清除超時計時器
window[callbackName] = null;
resolve(json); //成功處理
}
//生成scipt標簽
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0];
head.appendChild(script);
//錯誤處理
script.onerror = function(){
if(window[callbackName] == null){
reject('timeout'); //超時處理
} else{
reject('faild'); //失敗處理
window[callbackName] = null;
head.removeChild(script);
}
}
//超時判斷
script.timer = setTimeout(function () {
window[callbackName] = null;
head.removeChild(script);
}, overtime);
});
return promise;
};
jsonp的promise封裝
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 前言 JSONP以前研究過,最近又有點忘了,寫篇本文mark一下,旨在理解記住JSONP的原理及其實現。代碼實現用...
- //封裝JSONP function creatScriptTag(scrSring){ var script =...
- title: 封裝用于vue項目使用的jsonp庫date: 2017年10月4日 17:21:23tags: j...