ES7请求数据方法fetch 和一些Promise介绍

fetch: 
ES2017中新增的特性,与传统的ajax相比,其实它的作用是替代浏览器原生的XMLHttpRequest异步请求,我们在日常的开发中,基本不会自己去写XMLHttpRequest,主要是太复杂了,都是使用已经封装好了的各种插,件常用的有jquery,npm包管理工具也提供了axios,request等模块。而有了fetch后我们就可以在不用这些插件的情况下快速简单的实现异步请求了: 
get请求:

 var word = '123',
 url = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+word+'&json=1&p=3';
fetch(url,{mode: "no-cors"}).then(function(response) {
 return response;
}).then(function(data) {
 console.log(data);
}).catch(function(e) {
 console.log("Oops, error");
});

 fetch 通常可以配合async 函数,用同步的写法实现异步加载的效果,这样就可以把代码简单化,提高用户体验

简单写一下demo:   post请求数据

这个async 函数还可以结合Promise 进行异步请求

Promise: 
在ES6以前,在js中进行异步处理,大多数都是通过使用回调函数的方式来解决问题,如果简单的异步处理,回调函数的方式看起来还是比较优雅的,逼格还有点高,但是如果异步操作很多,回调嵌套就很深,代码看起来就会特别别扭,维护起来成本也会变高这个时候ES6带来Promise这个新特性,这个方法很好的解决了深层次异步嵌套的问题,我们在写代码的时候可以采用类似linux流式的书写方式: 
例如:

Promise还可以调用all()  和 race  有点相似,

Promise.all([p1,p2,p3]).then(resolve=>{

}).catch(reject=>{

}).

把异步操作同步化,同时加载数据,一旦开始就不会停止,只有全部加载成功才会返回数据

以上还不明白可以看一下这个demo:

Promise.all([

new Promise(function(resolve, reject) { resolve(1) }),

new Promise(function(resolve, reject) { resolve(2) }),

new Promise(function(resolve, reject) { resolve(3) }) ]).then(arr => { console.log(arr) // [1, 2, 3] })

而race的话是有点像翻译竞赛嘛!就看那一个数据加载的快,最先加载

写法一样,同步写法

Promise的2个参数就是resolve 和reject  成功和失败

Promise 有3种状态,

  • pending:进行中
  • fulfilled :已经成功
  • rejected 已经失败

你可能感兴趣的:(ES7请求数据方法fetch 和一些Promise介绍)