1. 程式人生 > >Vue.js中對jsonp的封裝

Vue.js中對jsonp的封裝

在專案中我們經常要對一些第三方介面進行跨域訪問來獲取資料,對jsonp的封裝可以加強程式碼的複用,可維護性。

code:

import JSONP from 'jsonp'

export default function jsonp(url, data, option) {
//  url中可能出現沒有?的情況
  url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
//  使用promise方法進行回撥
  return new Promise((resolve, reject) => {
    JSONP(url, option, (err, data) => {
      if
(!err) { resolve(data) } else { reject(err) } }) }) } // 拼接url query params function param(data) { // data是一個物件一般只有一層 let url = '' for (let key in data) { // 為了防止data中值為undefined的情況 let value = data[key] !== undefined ? data[key] : '' // 每一個鍵值對用&連線 url += `&${key}=${encodeURIComponent
(value)}` } // 去除url中的第一個&,以免重複 return url ? url.substring(1) : '' }