Promise学习

1. 理解

1)Promise 是一门新技术(ES6规范)

2)Promise是JS中进行异步编程的新解决方案

 

2. 具体表达

1)从语法上说:Promise是一个构造函数,

2)从功能上说:Promise对象用来封装一个异步操作并可以获取其成功/失败的结果值

支持链式调用,解决回调地狱问题,回调函数中多次嵌套。

 

3. Promise的状态改变。PromiseState 是内置属性

1)pending变为resolve / fullfilled

2)pending变为reject

只有两种状态改变,且promise对象只能改变一次,无论变为成功和失败都会有一个结果数据。(试验过程中是一个值)

 

4. Promise 对象的值

保存异步任务成功或失败的结果,可以由resolve和reject函数进行

 

 Promise中传入的参数 (resolve, reject) 称为executor执行器,执行器会在Promise内部立即同步调用,异步操作在执行器中执行。

catch可以指定失败时候的回调。catch内部也是then方法实现的。

 

常用方法Promise.resolve() 如果传入一个非Promise对象,则状态为resolve,并且result为传入的值,如果为Promise对象,则状态值为Promise的对象           Promise.reject() 传入非Promise,以及结果 状态都是reject,

失败结果可以是传入的成功Promise对象。

 

Promise.all方法() => {} 传入n个promise的数组,返回一个新的promise,只有所有的promise都成功才成功,只要有一个失败了就直接失败。

如果所有promise成功,返回结果为成功,且结果为所有数组成功的结果数组,如果失败,为失败这个promise的结果。

 

Promise.race方法,传入n个promise的数组,返回一个新的promise。第一个完成的promise的结果状态就是最终的结果状态

 

throw 抛出错误可以改变promise对象的状态。 Promise中不管先声明then方法还是 先 改变promise的状态,都是等状态改变之后,再执行then的回调函数。promise不管同步异步都是支持的。

 

调用then方法,如果抛出错误,则执行then方法返回的promise 为reject, 如果 返回非promise对象,返回结果是fulfill即resolve(),如果返回promise对象,根据promise对象来决定。

 

5. 中断Promise的执行链,可以返回一个pandding状态的执行链才行。

 

posted @ 2023-05-05 11:26  my日常work  阅读(15)  评论(0编辑  收藏  举报