谈谈你对promise的理解?

简介: Promise是ES6异步编程的一种解决方案(目前最先进的解决方案是async和await的搭配(ES8),但是它们是基于promise的),从语法上讲,Promise是一个对象或者说是构造函数,用来封装异步操作并可以获取其成功或失败的结果。

一、什么是Promise

Promise是ES6异步编程的一种解决方案(目前最先进的解决方案是async和await的搭配(ES8),但是它们是基于promise的),从语法上讲,Promise是一个对象或者说是构造函数,用来封装异步操作并可以获取其成功或失败的结果。

二、promise的好处

1.可以避免多层异步调用嵌套问题(回调地狱)

2.Promise 对象提供了简洁的API,使得控制异步操作更加容易(js执行机制导致的异步问题)

这两点在我ES6专栏的相关文章有很详细的介绍,这里就不展开了

三、promise的三种状态

它的三种状态分别为

1.pending等待中,或者进行中,表示还没有得到结果

2.resolved 已经完成,表示得到了我们想要的结果,可以继续往下执行

3.rejected 也表示得到结果,但是由于结果并非我们所愿,因此拒绝执行


注意这三种状态不受外界影响,而且状态只能从pending改变为resolved或者rejected,并且不可逆

三、promise的用法

1.promise的实例方法

1.then()得到异步任务的正确结果

2.catch()获取异常信息

3.finally()成功与否都会执行(尚且不是正式标准)

注意then方法可以接受两个函数,第一个函数为promise状态为成功的回调函数,第二个函数为promise状态为失败的回调函数(可以不写,一般用catch方法捕获promise状态为失败的异常信息)


2.promise的对象方法(p1,p2,p3为promise的实例对象)

1.Promise.all()并发处理多个异步任务,所有任务都执行完成才能得到结果

Promise.all( [p1,p2,p3] ) .then ( (result) => {consoleog (result)
})

2.Promise.race()并发处理多个异步任务,只要有一个任务完成就能得到结果

Promise.race ( [p1,p2,p3] ).then ( (result)=>{
console. log (result)
})

四、总结

1.promise其实就是一个对象或者说是构造函数

2.promise的出现(es6) 就是解决异步编程和回调地狱等问题,async和await的出现(ES8)就是基于promise的一种解决异步编程的终极解决方案(简化代码等等)

3.在前端中,ajax和axios都会用到异步编程,axios更是基于promise的,所以一定要掌握promise以及用async和await搭配promise的使用

相关文章
|
前端开发 JavaScript 算法
三分钟深入了解threejs的常见面试知识点
三分钟深入了解threejs的常见面试知识点
1337 0
|
7月前
|
开发工具 Android开发 iOS开发
flutter 环境配置
flutter 环境配置
1397 63
|
JSON 移动开发 资源调度
前端工具 Prettier 详细使用流程(兼容ESLint)
前端工具 Prettier 详细使用流程(兼容ESLint)
877 0
|
前端开发 UED 容器
使用 Flex 布局实现垂直居中效果
【10月更文挑战第7天】
1294 57
|
开发框架 缓存 前端开发
基于SqlSugar的开发框架循序渐进介绍(8)-- 在基类函数封装实现用户操作日志记录
基于SqlSugar的开发框架循序渐进介绍(8)-- 在基类函数封装实现用户操作日志记录
|
JavaScript 索引
vscode中快捷生成自定义vue3模板
vscode中快捷生成自定义vue3模板
1391 1
|
存储 运维 Kubernetes
k8s学习笔记之StorageClass+NFS
k8s学习笔记之StorageClass+NFS
|
网络协议 算法 网络性能优化
TCP为什么是可靠的(怎么保证有效传输的)?
TCP为什么是可靠的(怎么保证有效传输的)?
1163 0
仿美团饿了么程序,外卖人9.0外卖订餐源码(PC+微信)
仿美团饿了么程序,外卖人9.0商业版外卖订餐源码,PC+微信+WAP+短信宝,多城市多色版 非常不错的独立版外卖跑腿网站源码,喜欢的可以下载调试看看吧!!
324 0
|
前端开发 算法 JavaScript
提速利器:Tree Shaking助力你的应用程序
提速利器:Tree Shaking助力你的应用程序
提速利器:Tree Shaking助力你的应用程序