关于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对象