使用promise封装Ajax

一、封装Ajax

  1 <script>
  2         var ajax = new Promise((resolve, reject) => {
  3             var xhr = new XMLHttpRequest();
  4             xhr.open(‘get‘, ‘./test1.txt‘, true);
  5             xhr.send();
  6             xhr.onreadystatechange = function() {
  7                 if (xhr.status == 200 && xhr.readyState == 4) {
  8                     resolve(xhr.responseText);
  9                 }
 10                 setTimeout(function() {
 11                     reject(new Error(‘连接超时‘));
 12                 }, 2000);
 13             }
 14         });
 15
 16         ajax.then(function(data) {
 17             console.log(data);
 18         }).catch(function(err) {
 19             console.error(err);
 20         })
 21     </script>

二、封装get请求

  1     <script>
  2         function $get(url, data) {
  3             if (typeof data === ‘object‘) {
  4                 url += "?time=" + Date.now();
  5                 for (var i in data) {
  6                     url += "&" + i + "=" + data[i];
  7                 }
  8             }
  9             return new Promise((resolve, reject) => {
 10                 var xhr = new XMLHttpRequest();
 11                 xhr.open(‘get‘, url, true);
 12                 xhr.send();
 13                 xhr.onreadystatechange = function() {
 14                     if (xhr.readyState == 4 && xhr.status == 200) {
 15                         resolve(xhr.responseText);
 16                     }
 17                     setTimeout(() => {
 18                         reject(new Error(‘连接超时‘));
 19                     }, 2000);
 20                 }
 21             });
 22         }
 23
 24         $get(‘./test.txt‘, {
 25             "username": "zhansgan"
 26         }).then(function(data) {
 27             console.log(data);
 28         }).catch(function(err) {
 29             console.error(err);
 30         })
 31     </script>

原文地址:https://www.cnblogs.com/likecn/p/11718838.html

时间: 2024-08-30 05:13:52

使用promise封装Ajax的相关文章

ES6之Promise封装ajax()

什么是异步? 同步:一定要等任务执行完了,得到结果,才执行下一个任务. 异步:不等任务执行完,直接执行下一个任务. 为什么要用promise? Promise的出现主要是解决地狱回调的问题,比如你需要结果需要请求很多个接口,这些接口的参数需要另外那个的接口返回的数据作为依赖,这样就需要我们一层嵌套一层,但是有了Promise 我们就无需嵌套 Promise的本质就是分离了异步数据获取和业务逻辑 所有代码 Promise/A+规范 $.Ajax()中的promise 如果不使用promise,$.

jq中使用promise封装ajax

let ajax=function(url, param, type = 'GET'){ const promise = new Promise(function(resolve, reject){ $.ajax({ type: type, url: url, data: param, dataType: 'json', success(res) { resolve(res) }, error(res) { reject('响应错误') // reject(res.statusText) } }

简单的基于promise的ajax封装

基于promise的ajax封装 1 //调用方式: 2 /* 3 ajaxPrmomise({ 4 url:, 5 method:, 6 headers:{} 7 }).then(res=>{}) 8 */ 9 10 ;(function(window){ 11 //设置默认的参数配置项 12 let _default = { 13 url:'', 14 baseURL:'', 15 method:'GET', 16 params:null, //get请求基于问号传参方式传递给服务器的内容

React Native 网络请求封装:使用Promise封装fetch请求

React Native中虽然也内置了XMLHttpRequest 网络请求API(也就是俗称的ajax),但XMLHttpRequest 是一个设计粗糙的 API,不符合职责分离的原则,配置和调用方式非常混乱,而且基于事件的异步模型写起来也没有现代的 Promise 友好.而Fetch 的出现就是为了解决 XHR 的问题,所以ReactNative官方推荐使用Fetch API.http://blog.csdn.net/withings/article/details/71331726 fet

原生JS封装ajax方法

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <title>Examples</title> 10 <script> 11 12 //将对象序列

原生JavaScript 封装ajax

原生JavaScript 封装ajax   function myajax(options){ //新建一个局部对象 用来存放用户输入的各种参数 var opt={ type:options.type||"get",//获取用户输入的传输方法,可选,不写为get data:options.data||"",//获取用户输入的数据 dataType:options.dataType||"",//获取用户输入的数据类型比如json 或者xml url

原生JS封装AJAX

今天我们来说说利用原生JS封装AJAX. jquery框架的AJAX方法确实很好用,但有时候我们写的页面需要引入多个JS插件,不一定哪个插件就会和jquery发生冲突,导致jquery用不了了.或者页面比较简单,不需要加重浏览器的负担,这时我们自己封装一个AJAX就是一个很好的办法. //将数据转换成 a=1&b=2格式;function json2url(json){   var arr = [];   //加随机数防止缓存;   json.t = Math.random();   for(v

封装ajax原理

封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=value&key=value形式,加入数组 通过XMLHttpRequest对象创建xhr,早期的IE浏览器不支持XMLHttpRequest对象,通过var xhr = new ActiveXObject('Msxm12.XMLHTTP')创建 判断用户请求的方法 get:将数据拼接在url后面,

AJAX编程-封装ajax工具函数

即 Asynchronous [e's??kr?n?s] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器进行通信. XMLHttpRequest可以以异步方式的处理程序,浏览器内建对象,用于在后台与服务器通信(交换数据) ,由此我们便可实现对网页的部分更新,而不是刷新整个页面. 封装ajax工具函数 $.ajax = function(options){ if(!options) return fal