promise可以说是解决回调地狱的神奇。面试也经常被问到。今天总结一下。
1、三种状态:pending resolved rejected.
状态的表现:
①、pending状态的promise 不会触发 then和catch的回调;
②、promise状态为resolved 会立即触发 then的回调;
③、promise状态为rejected 会立即触发 catch的回调;
④、.then((res) => {}) 默认会返回一个 resolved状态的promis 触发后面的 .then() 回调;
⑤、.catch((err) => {}) 默认会返回一个 resolved状态的promis 触发后面的 .then() 回调;
⑥、状态改变只能从 pending —> resolved 或者 pending —> rejected 没有其他的改变形式。
2、三个常用api: .then() .catch() .all()
.then( (res) => {})是返回成功的回调,回调参数res是返回成功的结果;
.catch( (err) => {})是返回失败的回调,回调参数err是返回的失败结果。
.all(p1,p2,…)是用于并发请求的,参数是一个个的promis对象
Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一致的,即p1的结果在前,即便p1的结果获取的比p2要晚。这带来了一个绝大的好处:在前端开发请求数据的过程中,偶尔会遇到发送多个请求并根据请求顺序获取和使用数据的场景,使用Promise.all毫无疑问可以解决这个问题。
Promise.all(iterable) 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise
都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve);如果参数中 promise
有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise 的结果。
promise的使用,和考点
最新推荐文章于 2025-06-28 17:23:59 发布