美文网首页
jsonp的promise封装

jsonp的promise封装

作者: 大七的黎明 | 来源:发表于2017-09-22 14:33 被阅读0次
    /*
        @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封装

          本文链接:https://www.haomeiwen.com/subject/lkrfextx.html