一.介绍(promise)
Promise其实是一个构造函数, 自己身上有all、reject、resolve这些方法,原型上有then、catch这些方法。这么说用Promise new出来的对象肯定就有then、catch方法。
prpmise:启动异步任务=>返回promise对象=>给promise对象绑定函数
从语法来说:promise是一个构造函数;
从功能上来说:promise对象用来封装一个异步操作并可以获取其成功或者失败的结果。
(用promise用来封装函数)
优点:
(1)指定回调函数的方式会更加的灵活
(2)支持链式调用,可以解决回调函数地域问题
1.promise的状态:实例对象中的一个属性(promiseState)(内置的)
pending:进行中
resolved/ fullfilled:已经成功
rejected 已经失败
状态改变:
Promise对象的状态改变,只有两种可能:
从pending变为resolved
从pending变为rejected。
2.promise的值(promiseResult):实力对象中的另外一属性,保存着异步任务的失败或者成功的结果
resolve 解决 函数类型的数据
reject 拒绝 函数类型的数据
二.async,await
async以及await是ES7中的标准,是为优化Promise而开发出来的 可以说async/await是异步编程终级解决方案
(1)函数的返回值为promise对象、
(2)promise对象的结果由async函数的返回值决定
两者需要同时出现,async声明的必须是一个函数,不可以是其他;
await必须在声明了async的函数中使用,否则会报错;
async、await 为promise服务;
async的本质是返回一个promise;既,不管函数内部如何,返回的总是一个promise
async function a(){};
a
async ƒ a(){}
a()
async function a(){return '我是一个promise'};
a()
Promise {<fulfilled>: "我是一个promise"}
await 也是一个修饰符,但是必须放在 async 函数内部使用, await关键字的作用 就是获取 Promise中返回的内容,resolve或者reject的值。