JS中promise是什么?
Promise是异步编程的一中解决方案,最早是由社区提出的,es6中正式的将其纳入,他是一个对象,可以获取到异步的操作,他相比传统的回调函数,更加的强大和合理,避免了回调地狱。
所谓的Promise,简单的来说就是一个可以存放未来才能结束的任务或者事件。
1. Promise实列有三个状态:
- pending (进行中)
- resolved (成功)
- rejected(失败)
当要处理某个任务的时候,promise的状态是pending,任务完成是状态就变成了resolved,任务失败状态就变成了rejected。
2.Promise实列有俩个过程:
- pending -- resolved (进行到成功)
- pending -- rejected (进行到失败)
状态一旦改变就不能在变成其他的状态。
3. Promise方法:
常用的方法有5中:then()、catch()、all()、race()、finally()。
1.then()
接受俩个俩个回调函数作为参数,第一个参数表示成功的时候去执行,第二参数表示失败的时候去执行,返回的时一个新的promise的实列。
2.catch()
相当于then方法的第二个参数。
3.all()
接受一个数组作为自己的参数,数组中每一项都是一个promise对象,当数组的每一个promise状态时resolved时,all方法的状态才会变成resolved,有一个变成rejected,那么all方法的状态就会变成rejected。
4.race()
他和all方法一样,接受一个数组作为自己的参数,但是不同的时他时以第一完成的promise的状态来定义直接的状态,假设第一个状态时resolved,那么race方法的状态就是resolved,反之相反。
5finally()
他是不管promise时什么状态都会执行的都会去执行的,他不接受任何的参数。
Promise的优点:
- 对象的状态不受外界的影响,只有异步的操作结果才能改变他的状态。
- 一旦状态改变就不会在变,任何时候都可以得到这个结果,就如他的名字一样promise(承诺)。
Promise的缺点:
- 无法去取消promise,只要创建就会执行,无法中途去终止。
- 如果不设置回调函数去接受,promise内部会报错,不会映射到外部
- 处在pending(进行中)时 ,外部无法得知进展到那一步
总结:
Promise最早是由社区提出的,在es6才被正式的纳入规范中,是为了解决异步编程的一种方案
他是一个构造函数,接受一个函数作为参数,返回一个Promise实列。他有三个状态:pending(进行中)、resolved(成功)、rejected(失败)。实列的状态只能是pending ->resolved和
pending ->rejected ,状态一旦改变就不会在变换了。
JS中promise是什么?相关推荐
- JS中Promise函数then的奥秘探究
JS中Promise函数then的奥秘探究 Promise概述 Promise对象是CommonJS工作组提出的一种规范,目的是为异步操作提供统一接口. 那么,什么是Promises? 首先,它是一个 ...
- Js中Promise用法
promise是用来解决Js中的异步问题的.基本结构如下: function a() {return new Promise((resolve, reject) => {//dosomethin ...
- js中promise原理及手动基本实现_V2
前言 上一章中已经讲完了promise最基本实现的原理,本章将在其基础上进行进一步的扩展,以满足更多的使用场景,源码在文章最后哦. 上一章链接:https://blog.csdn.net/weixin ...
- js中promise原理及手动基本实现_V1
前言 这几天面试过程,有个面试官突然跟我抠上了promise的实现原理,虽然有所准备,但是没能清晰地说出其中的原理,所以有点遗憾!!!,但是事已至此,只能默默去查了相关资料深入其中了解一番.因此就有了 ...
- js中promise原理及手动基本实现_V3
前言 前一章讲到通过订阅-发布模式,解决了resolve被setTimeout包裹,导致最终结果出不来的bug.但是,原生的promise还有一个很重要的特性,就是可以进行链式调用,then方法的执行 ...
- js中promise的用法
promise promise是ES6引进的异步编程解决方案,是一个构造函数,可以实例化对象,可以解决回调地狱的问题. 首先我们看一下promise的实例化对象是什么 let P = new Prom ...
- js中promise原理及手动基本实现_V4
前言 上一章,我们实现了promise的then方法链式调用,本章节就对原型promise的catch方法进行简单的实现,同时对对象进行一个整体的异常处理优化,以提高对象整体的健壮度. 上一章链接:h ...
- 【Promise】入门-同步回调-异步回调-JS中的异常error处理-Promis的理解和使用-基本使用-链式调用-七个关键问题
文章目录 1. 预备知识 1.1 实例对象与函数对象 1.2 两种类型的回调函数 1. 同步回调 2. 异步回调 1.3 JS中的异常error处理 1. 错误的类型 2. 错误处理(捕获与抛出) 3 ...
- php模拟红绿灯,JS 中使用Promise 实现红绿灯实例代码(demo)
本文通过实例代码给大家介绍了JS 中使用Promise 实现红绿灯效果,在文中给大家介绍了一个promise用法例子,不了解js中如何使用Promise的朋友可以参考下本篇文章 要求使用promise ...
- php模拟红绿灯,JS 中使用Promise 实现红绿灯详解
本文通过实例代码给大家介绍了JS 中使用Promise 实现红绿灯效果,在文中给大家介绍了一个promise用法例子,需要的朋友可以参考下,希望能帮助到大家. 要求使用promise 实现红绿灯颜色的 ...
最新文章
- 高级软件工程的第一次作业:回顾自己本科设计
- MVC Filter自定义异常(拦截)
- 如何知道刚刚插入数据库那条数据的id
- mysql 怎么在VS2017上附加进去
- 【推荐系统】深入理解YouTube推荐系统算法
- Linux基础优化方法(二)———系统安全相关优化:防火墙和selinux
- 转载 - 最近对问题
- CKeditor自定义上传图片功能
- SpringCloud工作笔记058---springBoot项目maven命令打包部署
- ❤️《JUC并发编程从入门到高级》(建议收藏)❤️
- aic值检验 p值_23. 假设检验的时候为什么常写p lt; 0.05,而不写具体的p值?
- 2012.5.4号--关于125k(简易读卡和低频唤醒)
- ubuntu安装dockers和images:dvwa
- Linux 多线程编程 (典藏、含代码)
- 数据分析案例——航空公司客户价值分析
- 艾永亮:经济型酒店风光不再,亚朵锁定中端酒店市场打造超级产品
- android 系统
- 原生JS写三级联动 --省--市--区
- D28 1000瓶药中找出一瓶毒药,10只老鼠做试验
- CMMI的5个等级简单介绍
热门文章
- 计算机怎么看事件管理,win7系统事件查看器怎么打开
- true launch bar 和 editplus
- 百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
- oel安装中文环境,Linux UTC,CST时间及修改时间
- TikTok如何玩转语言教学类目?
- hive学习第五章:查询
- python字典第一个元素_如何获取python字典中的第一个值
- 干货3分钟搞懂私募投以及技术面试
- 【刷机】小米平板1刷ROM时出现E1001 Error:7和twrp恢复备份报错Error:255的报错解决方法
- 计算机中丢失d3dx9 43.dll,游戏提示“没有找到d3dx9_43.dll”的解决方法