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是什么?相关推荐

  1. JS中Promise函数then的奥秘探究

    JS中Promise函数then的奥秘探究 Promise概述 Promise对象是CommonJS工作组提出的一种规范,目的是为异步操作提供统一接口. 那么,什么是Promises? 首先,它是一个 ...

  2. Js中Promise用法

    promise是用来解决Js中的异步问题的.基本结构如下: function a() {return new Promise((resolve, reject) => {//dosomethin ...

  3. js中promise原理及手动基本实现_V2

    前言 上一章中已经讲完了promise最基本实现的原理,本章将在其基础上进行进一步的扩展,以满足更多的使用场景,源码在文章最后哦. 上一章链接:https://blog.csdn.net/weixin ...

  4. js中promise原理及手动基本实现_V1

    前言 这几天面试过程,有个面试官突然跟我抠上了promise的实现原理,虽然有所准备,但是没能清晰地说出其中的原理,所以有点遗憾!!!,但是事已至此,只能默默去查了相关资料深入其中了解一番.因此就有了 ...

  5. js中promise原理及手动基本实现_V3

    前言 前一章讲到通过订阅-发布模式,解决了resolve被setTimeout包裹,导致最终结果出不来的bug.但是,原生的promise还有一个很重要的特性,就是可以进行链式调用,then方法的执行 ...

  6. js中promise的用法

    promise promise是ES6引进的异步编程解决方案,是一个构造函数,可以实例化对象,可以解决回调地狱的问题. 首先我们看一下promise的实例化对象是什么 let P = new Prom ...

  7. js中promise原理及手动基本实现_V4

    前言 上一章,我们实现了promise的then方法链式调用,本章节就对原型promise的catch方法进行简单的实现,同时对对象进行一个整体的异常处理优化,以提高对象整体的健壮度. 上一章链接:h ...

  8. 【Promise】入门-同步回调-异步回调-JS中的异常error处理-Promis的理解和使用-基本使用-链式调用-七个关键问题

    文章目录 1. 预备知识 1.1 实例对象与函数对象 1.2 两种类型的回调函数 1. 同步回调 2. 异步回调 1.3 JS中的异常error处理 1. 错误的类型 2. 错误处理(捕获与抛出) 3 ...

  9. php模拟红绿灯,JS 中使用Promise 实现红绿灯实例代码(demo)

    本文通过实例代码给大家介绍了JS 中使用Promise 实现红绿灯效果,在文中给大家介绍了一个promise用法例子,不了解js中如何使用Promise的朋友可以参考下本篇文章 要求使用promise ...

  10. php模拟红绿灯,JS 中使用Promise 实现红绿灯详解

    本文通过实例代码给大家介绍了JS 中使用Promise 实现红绿灯效果,在文中给大家介绍了一个promise用法例子,需要的朋友可以参考下,希望能帮助到大家. 要求使用promise 实现红绿灯颜色的 ...

最新文章

  1. 高级软件工程的第一次作业:回顾自己本科设计
  2. MVC Filter自定义异常(拦截)
  3. 如何知道刚刚插入数据库那条数据的id
  4. mysql 怎么在VS2017上附加进去
  5. 【推荐系统】深入理解YouTube推荐系统算法
  6. Linux基础优化方法(二)———系统安全相关优化:防火墙和selinux
  7. 转载 - 最近对问题
  8. CKeditor自定义上传图片功能
  9. SpringCloud工作笔记058---springBoot项目maven命令打包部署
  10. ❤️《JUC并发编程从入门到高级》(建议收藏)❤️
  11. aic值检验 p值_23. 假设检验的时候为什么常写p lt; 0.05,而不写具体的p值?
  12. 2012.5.4号--关于125k(简易读卡和低频唤醒)
  13. ubuntu安装dockers和images:dvwa
  14. Linux 多线程编程 (典藏、含代码)
  15. 数据分析案例——航空公司客户价值分析
  16. 艾永亮:经济型酒店风光不再,亚朵锁定中端酒店市场打造超级产品
  17. android 系统
  18. 原生JS写三级联动 --省--市--区
  19. D28 1000瓶药中找出一瓶毒药,10只老鼠做试验
  20. CMMI的5个等级简单介绍

热门文章

  1. 计算机怎么看事件管理,win7系统事件查看器怎么打开
  2. true launch bar 和 editplus
  3. 百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
  4. oel安装中文环境,Linux UTC,CST时间及修改时间
  5. TikTok如何玩转语言教学类目?
  6. hive学习第五章:查询
  7. python字典第一个元素_如何获取python字典中的第一个值
  8. 干货3分钟搞懂私募投以及技术面试
  9. 【刷机】小米平板1刷ROM时出现E1001 Error:7和twrp恢复备份报错Error:255的报错解决方法
  10. 计算机中丢失d3dx9 43.dll,游戏提示“没有找到d3dx9_43.dll”的解决方法