回调地狱:回调地狱是指回调函数中嵌套回调函数的情况。回调函数是为了实现代码顺序执行而出现的一种操作,会造成代码可读性差,后期难维护。
一、Promise是什么?
Promise是最早由社区提出和实现的一种解决异步编程的方案,比其他传统的解决方案(回调函数和事件)更合理更强大。
ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。
ES6规定,Promise对象是一个构造函数,用来生成Promise实例。
二、Promise是为了解决什么问题而产生的?
promise是为了解决异步处理回调金字塔问题而产生的。
三、Promise的两个特点
1.promise是一种状态机:pending(进行中)、fulfilled(已成功)和rejected(已失败),只有异步处理操作的结果才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
2.Promise的状态一旦改变就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由pending变成fulfilled或者由pending变成rejected。
四、Promise的三个缺点
1.无法取消Promise,一旦新建他就会立即执行,无法中途取消
2.如果不设置回调函数,Promise内部抛出的错误,不会反映到外部
3.当处于pending状态时,无法得知目前进展到哪一阶段,是刚刚开始还是即将完成
五、Promise在哪存放成功回调序列和失败回调序列?
1.onResolvedCallbacks成功后要执行的回调序列是一个数组
2.onRejectedCallbacks失败后要执行的回调序列是一个数组
以上两个数组存放在Promise创建实例时给Promise这个类传的函数中,默认都是空数组。
每次实例then的时候传入onFulfilled成功回调onRejected失败回调,如果此时的状态是pending则将onFulfilled和onRejected push到对应的成功回调序列数组和失败回调序列数组中,如果此时的状态是fulfilled则onFulfilled立即执行,
上述序列中的回调函数执行的时候是有顺序的,即按照顺序依次执行。
标签:函数,了解,Promise,数组,简单,序列,回调,pending From: https://blog.csdn.net/qq_51679817/article/details/136687251