何为promise
1.何为promise
请问何为promise ?
先解决一个问题何为 同步 异步
- 同步是什么
- 同步就是内存中顺序执行的处理器指令
- 大白话就是每条指令都会严格按照他们出现的顺序来执行
- 异步是什么
- 类似于系统的中断
- 大白话就是这个代码正常执行,而下面的代码正常执行无需等待这个异步代码的执行
- 以往的编程模式(已经抛弃,但可学习)
- 这个模式太复杂了
- 在settimeout中使用try/catch来控制成功和失败
- 嵌套异步调用(个人感觉这个才是魔鬼)这个也是回调地狱的由来
promise 此时应声而出 它是一种异步编程机制
- promise是es6中的知识点
- 首先它是es6中新增的引用类型Promise,可以使用new进行实例化
- 创建的时候需要传入函数作为参数
- promise的状态有三种
- pending 待定 是最初的状态,但也可以修改其开始状态
- fuldiled 兑现 也称 解决 resolve
- rejected 拒绝
- 可以由pending状态转换为兑现 或 拒绝状态,一旦转换状态,其状态不可逆
- promise的两大主要作用
- 抽象的表示一个异步操作
- 状态转换为兑现 即有一个valu 值
- 状态转换为拒绝 即有一个reason 值
- 执行函数控制promise状态
- resolve() =>兑现
- reject() =>拒绝
- Promise.resolve() 会返回一个promise对象,可以接收多个参数,但是只会返回第一个参数
- Promise.resolve() 等同于 new Promise((resolve,reject)=>resolve())
- 与第四点同理Promise.reject(),特殊的是这个不会被try/catch捕获到
- promise的实例方法
- then()
- then里面有两个函数,第一个是用来执行resolve传入的value,第二个是用来执行reject传入的reason
- then返回的新promise和原先的promise进行比较是false
- catch相当于是reject的语法糖 只接收一个参数
- finally是为了减少then中的onResolve方法和onReject方法出现冗余代码,主要是用来清理代码
- promise的传递问题暂时不理解
- then()
- promise.race() 任意一个完成即执行
- promise.add() 全部完成即执行
- 搭配 async / await使用
__EOF__

本文作者:GTK
本文链接:https://www.cnblogs.com/DnmyCourage/p/17465593.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/DnmyCourage/p/17465593.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)