vue.js/ES6 Promise

Promise主要是为了解决异步请求。

语法:new Promise((resolve,reject)=>{

resolve();//成功 then()

reject();//失败 catch()

}).then(()=>{

//成功后的处理

}).catch(()=>{

//失败后的处理

});//resolve,reject 本身也是函数

注:then和catch都可以接收参数

无参数

new Promise((resolve,reject)=>{

//这里可以写逻辑

resolve();//完成后调用 resolve,就会跑到then里面,可以有参数,会传到then里面

}).then(()=>{

//自己编写后续逻辑

});

有参数

new Promise((resolve,reject)=>{

//这里可以写逻辑

var para = {name:'jay'};

resolve(para);//完成后调用 resolve,para会传到then里面就是obj

}).then((obj)=>{

var name = obj.name;//这就是上面传的jay

//自己编写后续逻辑

});

//不写catch,在then里面处理成功和失败

new Promise((resolve,reject)=>{

var para = {name:'jay'};

resolve(para);

reject('error message');

}).then((obj)=>{

var name = obj.name;

},

(error)=>{

//error 就是 字符串 error message

}

);

//分组处理

new Promise((resolve,reject)=>{

var para = {name:'jay'};

resolve(para);

}).then((obj)=>{

var name = obj.name;

return new Promise((resolve)=>{resolve(name+'xxxxxx');});//return Promise.resolve(name+'xxxxxx');//return Promise.reject('error message');//throw 'error from throw';

}).then((obj)=>{

var name = obj.name;//这个then里面处理的是上一个then里面return出来的结果

}).catch((error)=>{

//error 是 Promise.reject('error message');或者 throw 'error from throw'; 的结果

});

//分组处理 简写

new Promise((resolve,reject)=>{

var para = {name:'jay'};

resolve(para);

}).then((obj)=>{

var name = obj.name;

return name+'xxxxxx';

}).then((obj)=>{

var name = obj.name;//这个then里面处理的是上一个then里面return出来的结果

});

//Promise.all 等待所有请求结束后才调用then,then里面包含的是所有请求的结果集合。

Promise.all([
        new Promise((resolve,reject)=>{resolve('1')}),
        new Promise((resolve,reject)=>{resolve('2')})
      ]).then((results)=>{
        console.log(results);//['1','2']
      });