2020.09.24 promise

es6的promis

当有多个异步函数的时候

function one(next){
        console.log('One run start');
        setTimeout(()=>{
            next()
        },2000)
        // console.log(2);
    }
    function two(next){
        console.log('one end');
        console.log('two start');
        setTimeout(()=>{
            next()
        },2000)
    }
    function three(){
        console.log('two end');
        console.log('three start run');
        setTimeout(()=>{
            console.log('比赛结束');
        },2000)
    }

注意:以下的调用方式就是回调地狱,如果有足够多的异步会写很多的调用传参,
最后就是实参调形参。

​    one( function(){two(function(){three()})})

基本的promise

promise有三个状态 正在进行pending,还没有判断任务是否成功.是一个链式调用
reresolve()任务成功执行
rejected()任务执行失败.
每个promise都有then用来承接任务成功的下一个调用任务
then也两个任务成功和失败.
catch专门承接失败的值


    let pro = new Promise((resolve,rejected)=>{
        reresolve(false);
        // rejected('李权')
    })
    // pro.catch((err)=>{
    //     console.log(err);
    // })
    pro.then((data)=>{
        console.log(data);
        return new Promise((resolve,rejected)=>{
            resolve('叶梦宇')
            // rejected('李权')
        })
    }).then((data)=>{
        console.log(data);
    }).catch((data)=>{
        console.log(data);
    })

利用promise来管理多个异步任务

let pro = new Promise((resolve,rejected)=>{
        setTimeout(()=>{
            console.log(1);
            resolve()
        },4000)
    }).then(()=>{
       return new Promise((resolve,rejected)=>{
           setTimeout(()=>{
               console.log(2);
               resolve()
           },2000)
       })
        
    }).then(()=>{
        setTimeout(()=>{
            console.log(3);
        },1000)
    })

利用promise来管理异步任务

function One(){
    console.log('比赛开始');
    console.log('one running');
    return Promise.resolve(setTimeout(()=>{
        Two()
    },2000))
}
function Two(){
    console.log('one end');
    console.log('two start ');
    return Promise.resolve(
        setTimeout(()=>{
            Three()
        },2000)
    )
}
function Three(){
    console.log('two end');
    console.log('three 开始');
    setTimeout(()=>{
        console.log('比赛结束');
    },2000)
}
One()
只用一个one()就可以调用一二三

总结

promise有三个状态 正在进行pending,还没有判断任务是否成功.是一个链式调用
reresolve()任务成功执行
rejected()任务执行失败.

每个promise都有then用来承接任务成功的下一个调用任务
then也两个任务成功和失败.
catch专门承接失败的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值