为什么使用promise
解决回调函数地狱问题(逻辑不清晰)更好理解
promise具有单一状态值,解决信任问题,具有良好的准则规范
加粗样式
promise为构造函数 通过 变量赋值 = new promise(resolve,reject);
promise函数可以传两个参数 一个成功状态执行,一个失败状态执行
状态
①pedding //初始状态
②resolve //成功状态
③rejected//失败状态
promise函数 只可以从pedding改变到 resolve或者rejected且不可被改变
当函数里面执行率先执行这两个函数参数中的一个时,promise函数的状态就是参数状态,且promise返回一个promise对象
方法
promise.prototype.then
then方法是真正控制控制promise执行正确或错误函数的方法
promise.then(function (data){},function (err){})
promise状态为resolve执行第一个 状态为rejected执行第二个
data,err的值为 promise参数的返回值
then方法也会返回一个promise对象 如果其参数的返回值不是promise对象,那么他返回的promise对象状态值为resollve
如果是参数返回值是promise对象的话,和返回的promise对象的状态值保持一致,但是不一样(引用值怎么可能相等);
promise.prototype.catch
相当于 promise.then(null,function(err){})
promise.resolved(1)
想当于 new promise (resolved){resovled(1)}
promise.rejecred(1)
想当于 new promise (resolved,rejected){rejected(1)}
promise.all([p1,p2,p3])
数组所有promise参数全部成功才会返回数组
报错只返回出错的项
promise.race([p1,p2,p3])
谁快先执行谁