es6 入坑笔记(四)---异步处理

promise

用于js的异步处理

形式:

1.申明一个promise的对象

let p = new Promise(function(成功时的参数,失败时的参数){
  if(。。。。){
    成功时的参数(成功时想传的值);
  }else{
    失败时的参数(失败时想传的值);

  }
});
调用then方法
p.then(

//第一个为成功时调用的回调函数
(成功时想传的值)=>(。。。),

/第二个为失败时调用的回调函数
(失败时想传的值)=>(。。。),
);

eg:

let a=1;
let p = new Promise(function(r,rej){
if(a == 1){
r (2**3);
}else{
rej("失败");
}
}); p.then(
(res)=>(console.log(res)),//输出8
(fail)=>(console.log(fail))
);

then的另一种形式(推荐)

p.then(
(res)=>(console.log(res))
).catch((fail)=>(console.log(fail)));

用catch 来捕捉错误时回调

Promise.resolve(参数);

将参数转化为一个promise对象,resolve状态,成功状态

eg:

Promise.resolve('aaa');

等价于

new Promise((suc)=>(

  suc('aaa');

));

Promise.reject(参数);

将参数转化为一个promise对象,reject状态,失败状态

Promise.all([p1,p2,p3...]);

将一堆promise对象扔进一个数组内,打包成一个promise对象

只有数组内所有的状态都为成功状态时Promise.all才处于成功状态

Promise.race([p1,p2,p3...]);

将一堆promise对象扔进一个数组内,打包成一个promise对象

只要数组内有一个元素的状态为成功状态时Promise.race处于成功状态

then的连续调用

let a=1;
let b=1;

new Promise((suc,fail)=>{
setTimeout(() =>{
if(a==1){
suc('登陆成功');
}else{
fail('登陆失败!!!');
}
},1000);
}).then((res) => {
console.log("成功登陆,开始获取用户信息!");
return new Promise((suc,fail) =>(
setTimeout(() =>{
if(b==1){
suc({
name:"zjj",
age:18,
sex:"man"
});
}else{
fail('获取失败!!!');
}
},1000)))
}).then((res)=>{
console.log(res);
}).catch(
(fail)=>{
console.log(fail);
}
);

上一篇:solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)


下一篇:memcached分布式缓存