复习promise

138 阅读1分钟

new Promise(回调函数(两个参数)) 回调函数是promise执行之后才会执行里面的两个参数

new Promise 被创建之后就会被立即执行

也就是说第二个参数才是 : 捕获异常的 第一个参数是成功执行的

注意:上面是错误的写法 哈哈

var pro = new Promise((resolve,reject)=>{
            setTimeout(()=>{
                // console.log('执行成功!');

                // resolve和reject  只会执行一个  就break
                // resolve('执行成功!');
                reject('执行失败!');
                
            },2000)
        })

        //promise执行完成 会把 ‘执行成功’放进then()里作为参数
        pro.then(value =>{
            console.log('resolve异步处理执行完成')
            console.log(value)
        })
        pro.catch(value =>{
            console.log('reject异步处理执行完成')
            console.log(value)
        })
        

不知道什么原因

  //成功 
        new Promise((resolve,reject)=>{
            setTimeout(()=>{
                console.log('该prormise已被访问');
                resolve(1);
              
            })
        }).then(res=>{
            console.log(res)
            return res + 10//res + 10传到下一个then
        }).then(res =>{
            console.log(res)
            return new Promise(resolve=>resolve(res + 20))
        }).then(res=>{
            console.log(res)//最终输出
        }).catch(error =>{
            console.log(error)
        })

  // 拒绝
        new Promise((resolve,reject)=>{
            setTimeout(()=>{
                
                resolve(1);
              
            })
        }).then(res=>{
            console.log(res)
            // throw 'then1异常'
            return res + 10//res + 10传到下一个then
        }).then(res =>{
            console.log(res)
            throw 'then2异常'
            return new Promise(resolve=>resolve(res + 20))
        }).then(res=>{
            console.log(res)//最终输出
        }).catch(error =>{
            console.log(error)
        })
        

多个promise 同时执行

  var p1 = new Promise(resolve =>{
            setTimeout(()=>{
                resolve(1)
            },1000)
        })
        var p2 = new Promise(resolve =>{
            setTimeout(()=>{
                resolve(2)
            },2000)
        })
        var p3 = new Promise(resolve =>{
            setTimeout(()=>{
                resolve(3)
            },500)
        })
        var p4 = new Promise(resolve =>{
            setTimeout(()=>{
                resolve(4)
            },300)
        })
        var p5 = new Promise(resolve =>{
            setTimeout(()=>{
                resolve(5)
            },6000)
        })
        Promise.all([p1,p2,p3,p4,p5]).then(values=>console.log(values))//[1, 2, 3, 4, 5]
        Promise.all([p2,p5,p1,p4,p3]).then(values=>console.log(values))// [2, 5, 1, 4, 3]
    ```
    等了6s
    
按顺序输出

![](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/7/14/1734bbe86dc4590d~tplv-t2oaga2asx-image.image)
还可以捕获异常
![](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/7/14/1734bba1f92e280c~tplv-t2oaga2asx-image.image)