使用Promise封装JSONP
使用Promise对一个JSONP库进行封装
JSONP库来自A simple JSONP implementation
创建一个JS文件,引入安装过的jsonp库。将文件暴露成一个方法,这个方法接收三个参数:url, data, option
由于原始的JSONP库在引入url前需要将url拼好,而我希望在引入url时只引入不带参数的url地址,而将所有的参数都放在data里。option则对应原始库中的option。
import originJSONP from 'jsonp'
export default function jsonp(url, data, option) {
url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
return new Promise((resolve, reject) => {
originJSONP(url, option, (err, data) => {
if (!err) {
resolve(data)
} else {
reject(err)
}
})
})
}
function param(data) {
let url = ''
for (var k in data) {
let value = data[k] !== undefined ? data[k] : ''
url += `&${k}=${encodeURIComponent(value)}` // 拼接URL
}
return url ? url.substring(1) : '' // return时去掉&
}
本文参考
作者:hayato
文章版权:本站所有文章版权依赖于 CC BY-NC-SA 3.0 Unported License
本文链接:https://blog.axis-studio.org/2017/10/10/使用Promise封装JSONP/