Promise封装ajax请求
来源:互联网 发布:网络自制剧排行榜 编辑:程序博客网 时间:2024/05/16 05:52
ES6逐渐流行,用Promise对象封装一个ajax请求,代码如下:
//地址,请求方式,参数,是否异步,头部信息[待续]
function ajax(url,type,param,async,header) { return new Promise(function(resolve, reject) { var req = new XMLHttpRequest(); req.onload = function() { if(req.status == 200 || req.status == 304) { resolve(JSON.parse(req.response)); } else { reject(Error(req.statusText)); } }; req.onerror = function() { reject(Error("Network Error")); }; type == null || type.toUpperCase() == 'GET'?type='get':type='post'; param = formatParams(param); param == null || param == ''?url:url=url+'?'+param; async == null || async == true?async=true:async=false; //设置表单提交时的内容类型,未完 //xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.open(type,url,async); req.send(); }); function formatParams(data) { var _fpArr = []; for (var _fpName in data) { _fpArr.push(_fpName + "=" + data[_fpName]); } return _fpArr.join("&"); }; };
//调用
ajax('http://wthrcdn.etouch.cn/weather_mini','get',{citykey:101010100},true).then(function(response) { console.log('请求成功~'); console.log(JSON.stringify(response)); }, function(error) { console.error("Failed!", error); });
上面的例子只需创建一个Promise对象,调用它的resolve()和reject()以及then()方法,then()里面也可以写箭头函数;
【注】如果大家要单独封装指定请求的方法,如get()和post(),只需把改下传参和指定req.open(type,url,async)中的type类型即可
阅读全文
0 0
- Promise封装ajax请求
- ajax+promise 封装http请求
- 链式封装ajax请求的Promise
- ajax 、jsonp 、Promise 封装
- 封装ajax和Promise
- 原生ajax请求与Promise请求
- 原生ajax请求与Promise请求
- React Native 网络请求封装:使用Promise封装fetch请求
- React Native 网络请求封装:使用Promise封装fetch请求
- React Native 网络请求封装:使用Promise封装fetch请求
- React Native 网络请求封装:使用Promise封装fetch请求
- 使用Promise封装简单Ajax方法
- 用promise封装ajax操作的例子
- javascript系列之使用Promise封装ajax
- AJAX异步请求封装
- Ajax 请求封装
- ajax请求简单封装
- Ajax请求简单封装
- C++构造与析构(18)
- Hive SQL 练习
- C#路径中获取文件全路径、目录、扩展名、文件名称
- 解决python27 matplotlib 中文不显示问题
- 支付宝app支付java服务端
- Promise封装ajax请求
- 3个基于Java的Blockchain库
- Eclipse快捷键收集
- Nginx https反向代理和负载均衡服务器配置(centos)
- 工作日记2017.10.23 Mac 环境变量的位置、查看和添加PATH环境变量
- IMAS国际中小学数学竞赛考试详情
- Servlet技术详解
- RxJava 的 CompositeSubscription与内存泄漏
- android studio 3.0 升级 项目遇到的问题更改