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

promise

用于js的异步处理数组

形式:promise

1.申明一个promise的对象异步

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

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

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

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

eg:blog

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)));io

用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); });

相关文章
相关标签/搜索