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 相关文章推荐
js 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
Jquery 动态循环输出表格具体方法
Nov 23 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
vue与bootstrap实现时间选择器的示例代码
Aug 26 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
Jan 25 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
如何利用javascript接收json信息并进行处理
Aug 06 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 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
php5.3 废弃函数小结
2010/05/16 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
url decode problem 解决方法
2011/12/26 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
Javascript倒计时代码
2010/08/12 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
使用js 设置url参数
2013/07/08 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
layui 表格的属性的显示转换方法
2018/08/14 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
Python实现网站文件的全备份和差异备份
2014/11/30 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
python如何写出表白程序
2020/06/01 Python
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
渔夫的故事教学反思
2014/02/14 职场文书
个人授权委托书
2014/04/03 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
单位租车协议书
2015/01/29 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP