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 相关文章推荐
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
Aug 08 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
JS异步文件分片断点上传的实现思路
Dec 25 Javascript
vuejs父子组件通信的问题
Jan 11 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
浅谈从React渲染流程分析Diff算法
Sep 08 Javascript
微信js-sdk 录音功能的示例代码
Nov 01 Javascript
基于javascript的无缝滚动动画1
Aug 07 Javascript
vue-amap根据地址回显地图并mark的操作
Nov 03 Javascript
Angular CLI发布路径的配置项浅析
Mar 29 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
写给小白看的JavaScript异步
2017/11/29 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
医生进修自我鉴定
2014/01/19 职场文书
药品促销活动方案
2014/02/14 职场文书
采购助理岗位职责
2014/02/16 职场文书
市场营销工作计划书
2014/05/06 职场文书
作风年建设汇报材料
2014/08/14 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
干部个人考察材料
2014/12/24 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
于丹论语心得观后感
2015/06/15 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
MySQL 原理与优化之Update 优化
2022/08/14 MySQL