【跨域】封装一个JSONP方法

2021-05-21  本文已影响0人  Adder
/**
 *封装之后的jsonp
 * @param {请求资源地址} url
 */
function getJsonP(url) {
  return new Promise((resolve, reject)=> {
    const randomName = 'lucyJsonpFunctionName' + Math.random()
    window[randomName] = (data) => {
      resolve(data)
    }
    const script = document.createElement('script')
    // callback是前后端程序员默认使用的名称
    script.src = `${url}?callback=${randomName}`;
    script.onload = () => {
      //防止多个script标签,导致代码冗余
      script.remove()
    }
    script.onerror = () => {
      reject()
    }
    document.body.appendChild(script)
  });
}

getJsonP('http://qq.com:8888/friends.js').then((response) => {
  console.log(response)
})
上一篇 下一篇

猜你喜欢

热点阅读