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函数参数的可修改性问题
Dec 05 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
Feb 28 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
最全的JavaScript开发工具列表 总有一款适合你
Jun 29 Javascript
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
element上传组件循环引用及简单时间倒计时的实现
Oct 01 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
深入webpack打包原理及loader和plugin的实现
May 06 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 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP中使用curl入门教程
2015/07/02 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
vue debug 二种方法
2018/09/16 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python正则表达式和元字符详解
2018/11/29 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
python 生成器需注意的小问题
2020/09/29 Python
python制作抽奖程序代码详解
2021/01/15 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
生日宴会主持词
2014/03/20 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
MySQL的Query Cache图文详解
2021/07/01 MySQL