1 //1.引入 : 在main.js 中引入该文件即可 2 //2.使用: axios.jsonp('地址').then(res => { 3 // console.log(res) 4 // } 5 6 7 import axios from 'axios' 8 9 axios.jsonp = (url, params) => { 10 // 1 根据 url 和params 拼接请求地址 11 url += '?' 12 for (let k in params) { 13 url += k + '=' + params[k] + '&' 14 } 15 // 2 拼接 callback 16 const callbackName = 'itcast_' + (new Date() - 0) 17 url += 'callback=' + callbackName 18 // 3 动态创建script标签 19 const script = document.createElement('script') 20 script.src = url 21 document.head.appendChild(script) 22 return new Promise((resolve, reject) => { 23 // 给window添加一个函数,就相当于全局函数 24 window[callbackName] = function (data) { 25 // data 就是 JSONP接口返回的数据 26 // 调用resolve获取数据 27 resolve(data) 28 // 删除掉添加给window的属性 29 delete window[callbackName] 30 // 移除 script 标签 31 document.head.removeChild(script) 32 } 33 }) 34 }