Promise
Promise:承诺
生活中它是用来表述 对将来要发生的事情的肯定
在ES6中,它是新增的构造器(Array, Object, Promise),用来优化实现异步操作,也可以理解是一种为了避免回调地狱的异步解决方案
2. Promise 是一种状态机: pending(进行中)、fulfilled / resolved(已成功)和rejected(已失败) 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
回调地狱
回调函数中嵌套回调函数,一直嵌套下去形成了回调地狱。
回调地狱就是为是实现代码顺序执行而出现的一种操作,它会造成我们的代码可读性非常差,后期不好维护。
一、Promise是什么?
Promise是最早由社区提出和实现的一种解决异步编程的方案,比其他传统的解决方案(回调函数和事件)更合理和更强大。
ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。
二、Promise是为解决什么问题而产生的?
promise是为解决异步处理回调金字塔问题而产生的
三、Promise的两个特点
1、Promise对象的状态不受外界影响
1.pending 初始状态
2.fulfilled/ resolved 成功状态
3.rejected 失败状态
Promise 对象的状态不受外界影响。Promise
对象代表一个异步操作,有三种状态:pending
(进行中)、fulfilled
(已成功)和rejected
(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态
2、Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending变成fulfilled/ resolved或者由pending变成rejected
- resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”,触发.then的执行
- reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”,触发.catch的执行
四、Promise的三个缺点
1.无法取消Promise,一旦新建它就会立即执行,无法中途取消
2.如果不设置回调函数,Promise内部抛出的错误,不会反映到外部
3.当处于pending状态时,无法得知目前进展到哪一个阶段,是刚刚开始还是即将完成