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 相关文章推荐
javascript实现轮显新闻标题链接
Aug 13 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
Dec 30 Javascript
jQuery实战之品牌展示列表效果
Apr 10 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
Mar 18 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
JavaScript中关于class的调用方法
Nov 28 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
jQuery表单元素过滤选择器用法实例分析
Feb 20 jQuery
小程序实现长按保存图片的方法
Dec 31 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 explode函数实例代码
2012/02/27 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
初学python数组的处理代码
2011/01/04 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
python与idea的集成的实现
2020/11/20 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
前台领班岗位职责
2013/12/04 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
党员承诺书格式
2014/05/21 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
护理专业自我评价
2015/03/11 职场文书
李强优秀员工观后感
2015/06/16 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
详细了解MVC+proxy
2021/07/09 Java/Android
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL