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 事件查询综合 推荐收藏
Mar 10 Javascript
jQuery+jqmodal弹出窗口实现代码分明
Jun 14 Javascript
纯js分页代码(简洁实用)
Nov 05 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
confirm确认对话框的实现方法总结
Jun 17 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
vue弹窗组件的实现示例代码
Sep 10 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
详解JS实现系统登录页的登录和验证
Apr 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
PL-880隐藏功能
2021/03/01 无线电
用PHP函数解决SQL injection
2006/12/09 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
详解python的数字类型变量与其方法
2016/11/20 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
python实现日常记账本小程序
2018/03/10 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python 动态生成变量名以及动态获取变量的变量名方法
2019/01/20 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
HTML5标签大全
2016/11/23 HTML / CSS
企业统计员岗位职责
2013/12/13 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
中专自我鉴定
2014/02/05 职场文书
家长写给老师的建议书
2014/03/13 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
六五普法宣传标语
2014/10/06 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js