ES6 - Promise

198 阅读1分钟

Promise的作用

  1. ES6之前:异步操作通常采用:回调函数和事件监听的方式,再处理Ajax请求的时候,通常要嵌套多层回调函数,很难理清,又叫做回调地狱;
  2. Promise的出现就是为了解决回调地狱的问题,让结构更清晰;

语法

  1. new Promise()对象, 以及.then()方法:
    let p1 = new Promise(function(resolve,reject){
        resolve();//成功时调用
        reject(); //失败时调用
    })
    p1.then(res=>{console.log(res)}, rej=>{console.log(err)});
    //通常会把第二个参数rej,放到catch里面去处理
    p1.then(res=>{console.log(res)}).catch(err=>{console.log(err)});
    //.then 返回promise对象,所以可以链式操作,解决回调地狱问题
    
  2. Promise 的其他方法:
    let p1 = Promise.resolve('res'); //转成一个promise对象,状态为resolve;
    let p2 = Promise.reject('err'); //转成一个promise对象,状态为reject;
    let pArr1 = Promise.all([p1,p2,p3]);
    //打包多个promise对象到数组,但仍是promise对象可以用.then();
    //必须确保所有promise对象都为resolve才回返回
    let pArr2 = Promise.race([p1,p2,p3]);
    //只要有一个是resolve,就返回;