JS高级—0xxx—Promise
2022/4/11 6:13:12
本文主要是介绍JS高级—0xxx—Promise,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、为什么需要promise
首先,前端的网络请求需要用这种方式
大家自己写或者调用别人的,需要重写或看源码等导致开发成本过大,ECMA做了统一,于是就有了promise;
出现了promise,只要给调用者返回promise即可,调用者根据promise的状态自己做处理即可;
跟调用者说:我先给你一个承诺即promise,你先去处理其他mainScript,一会就会请求成功后我会调用resolve(data),然后根据规范promise.then()也会被联动调用,这个时候你便可以再promise.then()里接收到数据;
做了统一,方便开发;
二、执行器
1.执行器executor
就是new Promise里的回调函数;
2.resolve传不同值的区别
三、Promise对象(实例)方法
(一)then()方法 课程19集18’’
注意,调用resolve()后会执行then方法的第一个回调函数,这是规定,这些都是ecma的规定,不要问为什么,规定就是这样,v8引擎也就是这样实现的。
1.同一个pormise可以添加多个then方法,然后resolve()时,这多个then方法会同时被调用
2.then方法也会返回一个promise,所以可以链式调用
(1)如果返回一个普通的值(数字/字符串/普通对象/undefined):那么会被包裹到一个新的promise里继续返回,并且这个值作为这个新promise里resolve()方法的参数;
promise.then( (res)=>{ return 'aaaa'; }) 等价于: promise.then( (res)=>{ return new Promise((resolve,reject)=>{ resolve('aaa'); } })
(2)如果返回一个promise,那么这个promise也会被包裹,并且返回的promise的状态,会决定then()方法返回promise的状态;
不明白的话,可以看看上一章中resolve传不同值的状态;
promise.then( (res)=>{ return new Promise((resolve,reject)=>{ resolve(1111); } }) 等价于: promise.then( (res)=>{ return new Promise((resolve,reject)=>{ resolve( new Promise((resolve,reject)=>{ resolve(1111); }); } })
(3)如果返回一个对象,并且这个对象实现了then方法接口
promise.then( (res)=>{ return { then: ()=> resolve(11111) } }) 等价于: promise.then( (res)=>{ return new Promise((resolve,reject)=>{ resolve( obj.then()); } })
3.then()方法可以传递两个参数,第一个参数时resolve()执行的,第二个参数时reject()执行的;
但是现在一般都是只写一个参数,第二个参数不写,rejected要执行的回调放在catch方法中;
(二)catch方法
(三)finally方法
四、Promise类方法
(一)resolve方法
(二)reject方法
(三)all方法
感觉很像数组的every方法,都要满足时才为true;
res是一个数组,数组里是所有的promise的返回值,数组元素的顺序就是all()方法里参数的顺序;
(四)allSettled方法
(五)race方法
(六)any方法
all方法类似every,那么any方法就类似some方法,只要有一个就为true;
这篇关于JS高级—0xxx—Promise的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程