ES6-promise

1.异步请求/异步操作

异步:操作之间没有关系,干扰,可以同时进行多个操作;代码更复杂

同步:同时只能做一件事;代码简单

2.promise——消除异步操作:用同步一样的方式,来书写异步代码

(1)promise本身是一个构造函数,有all,reject,resolve等方法

    promise.all

    promise.race(race的用法与all一样,只是all是与的关系,必须每一个资源都成功,但race是或的关系,同时读取多个资源哪个先完成就用哪个,只要有一个成功的就可以)

(2)基本大框:

    jq下的promise:promsie.all( [ $.ajax(),$.ajax() ] ).then( results=>{//对了},err=>{//错了} )

 1 Promise.all({
 2    $.ajax({url:'data/arr.txt',dataType:'json'}), 
 3    $.ajax({url:'data/json.txt',dataType:'json'}), 
 4    $.ajax({url:'data/num.txt',dataType:'json'}), 
 5 }).then(results=>{
 6    let[arr.json,num]=result;
 7    alert('成功了');
 8    console.log(arr,json,num);   
 9 },err=>{
10    alert('失败了'); 
11 })

 

 1 function createPromise(url){//我们用promise的时候一般把它包在一个函数中,在需要的时候去运行这个函数。
 2     return new Promise(function(resolve,reject){//我们包装好的函数最后会return出promise对象,也就是说执行这个函数我们会得到一个promise对象//两个参数(回调函数):resolve-异步操作成功,reject-异步操作失败。严格来说resolve是将promise的状态设置为fullfiled,reject是将promise的状态设置为rejected。
 3         $.ajax({
 4             url,//url:url,在json中key与value值一样时可省略
 5             dataType:'json',
 6             sucess(arr){
 7               resolve(arr);
 8           },
 9           error(err){
10               reject(err);
11           }
12       })
13   });
14 }
15 promise.all([//把都要执行的函数都放在一个数组里,然后数组以同步的方式一个一个执行,执行结束后能够接着执行then里面的东西
16     createPromise('data/arr.txt'),
17     createPromise('data/json.txt')
18 ]).then(function(arr){//then会拿到我们之前函数中调用resolve时传的参数
19     let [res1,res2]=arr;//结构赋值
20     alert('全部成功了');
21     alert(res1);
22     alert(res2);
23 },function(){
24     alert('至少有一个失败了');

 

posted @ 2019-11-27 16:41  世界上最棒的鹅  阅读(412)  评论(0编辑  收藏  举报