vue中利用Promise封装jsonp并调取数据


Posted in Javascript onJune 18, 2019

Promise就是一个给一步操作提供的容器,在这个容器里,有两个阶段无法改变的阶段,第一个阶段就是Pending(进行),第二个阶段就是结果阶段,包含Fulfilled(成功)、Rejected(失败)两个结果。

这两个结果不会改变。然后结果结束后就会用then来执行相应的结果。

new Promise((resolve,reject)=>{
 相应操作
 if(异步操作成功){
  resolve(value)
 }else{
  reject(error)
 }
}).then(value=>{
 // 成功后操作
},error=>{
 // 失败后操作   
})

用Promise封装jsonp方法

import originJSONP from 'jsonp'
// 这时候Url是不带参数的,我们让data变成参数,data在具体定义获取具体内容的时候再单独配置
export default function jsonp(url, data, option) {
 // 看url是否有问号的意思就是只在第一次加参数的时候加一个问号,剩下就是加&
 url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
 return new Promise((resolve, reject) => {
  originJSONP(url, option, (err, data) => {
   if (!err) {
    resolve(data)
   } else {
    reject(err)
   }
  })
 })
}
// 将data数据遍历,前提data是一个数组
function param(data) {
 let url = ''
 for (var k in data) {
  let value = data[k] !== undefined ? data[k] : ''
  url += `&${k} = ${encodeURIComponent(value)}`
 }
 //删除第一个&符号
 return url ? url.substring(1) : ''
}

定义一个重复比较多的配置文件config.js

export const commonParams = {
 g_tk: 5381,
 inCharset: 'utf-8',
 outCharset: 'utf-8',
 notice: 0,
 format: 'jsonp'
}

// jsonp默认的options就是jsonpCallback
export const options = {
 param: 'jsonpCallback'
}
export const ERR_OK = 0

然后再进行获取页面方法的封装

import jsonp from 'common/js/jsonp'
import { commonParams, options } from './config'
export function getRecommend() {
 // 获取qq音乐的地址
 const url =
  'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'
 // object.assign()方法来合并commonParams对象和后面的对象
 const data = Object.assign({}, commonParams, {
  platform: 'h5',
  uin: 0,
  needNewCode: 1
 })
 // 最后返回的是
 return jsonp(url, data, options)
}

再相应组件中进行调用

<script>
import { getRecommend } from 'api/recommend'
import { ERR_OK } from 'api/config'
export default {
 created() {
  this._getRecommend()
 },
 methods: {
  _getRecommend() {
   getRecommend().then(res => {
    if (res.code === ERR_OK) {
     console.log(res.data.slider)
    }
   })
  }
 }
}
</script>

然后就可以在控制台获得数据了

总结

以上所述是小编给大家介绍的vue中利用Promise封装jsonp并调取数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
Apr 15 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
Feb 08 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
Aug 10 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 Javascript
JS设置cookie、读取cookie
Feb 24 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
详解javascript脚本何时会被执行
Feb 05 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 #Javascript
Angular中innerHTML标签的样式不起作用的原因解析
Jun 18 #Javascript
小程序click-scroll组件设计
Jun 18 #Javascript
在JavaScript中如何访问暂未存在的嵌套对象
Jun 18 #Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 #Javascript
JS删除String里某个字符的方法
Jan 06 #Javascript
简单了解Javscript中兄弟ifream的方法调用
Jun 17 #Javascript
You might like
php生成短网址示例
2014/05/05 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
浅析javascript 定时器
2014/12/23 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
python发送告警邮件脚本
2018/09/17 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
什么是组件架构
2016/05/15 面试题
员工自我鉴定范文
2013/10/06 职场文书
党校培训思想汇报
2014/01/03 职场文书
机械专业技术员求职信
2014/06/14 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
中学音乐课教学反思
2016/02/18 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
深入理解pytorch库的dockerfile
2022/06/10 Python