Promise

    技术2022-07-13  76

    关于Promise案例

    setTimeout(function() { var a = 'aaa' setTimeout(function() { var b = 'bbb' setTimeout(function() { var c = 'ccc' console.log(a + b + c) }, 10); }, 10); }, 10);

    使用Promise来进行改进

    then的参数是 上一个回调的结果

    new Promise(resolve=>{ var a='aaa'; setTimeOut(()=>{ resolve(a); },10) }).then(vA=>{ var b= 'bbb'; return value+b; }).then(vB=>{ var c="ccc"; return vB+c; })

    当然除此之外还可以使用Async Await

    //将定时器放到一个Promise对象函数中 function promise(str) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(str) }, 10) }) } async function showStr() { let a = await promise('aaa') let b = await promise('bbb') let c = await promise('ccc') console.log(a + b + c) } showStr()

    Promise小知识

    1 Promise有三种状态 fulfilled(成功) rejected(失败) Pending(等待)

    状态的变化只能从等待变为成功或者失败 确定之后状态不能再发生改变

    2 Promise有两个参数成功接收(resolve) 失败(reject)接收. then执行回调 链式调用

    3 Promise中的catch一般常用来捕获错误 then捕获错误会一直向下传递直到结束 catch 会立即捕获

    4 Promise中的finally方法 resolve reject都可以执行

    回调没有参数

    返回一个Promise对象且可以向下传递

    5 Promise.all 入参是一个数组 只要有一个为rejec 就会返回rejec 所有的值都都完成才能resolve 返回一个Promise对象

    6 Promise.race 只要有一个resolve 或者reject 便更改返回Promise的状态

    返回一个Promise对象

    Processed: 0.021, SQL: 9