Promise的概述
Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上 说,
Promise 是一个对象,从它可以获取异步操作的消息。
Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
1.如果p是一个pending状态的promise, 那么 res也是一个pending状态的promise,
2.如果p是一个resolve状态的promise, res没有返回值, 则res是一个值为null, resolve状态的Promise
Promise对象的创建方式
构造函数用一个函数作为参数,该函数有两个参数,两个参数均是回调函数,由JS引擎提供,你不用自己部署了。第一个参数resolve,当异步操作成功时会调用,它有一个参数用于传递异步操作成功的结果。第二个参数reject,当异步操作失败时会调用,它有一个参数用于传递异步操作失败的信息。例如:
Promise#then 方法的特点
then方法是在promise构造函数的prototype属性上,所以说,只要是promise创建的实力,都可以访问到then方法
Promise 链式调用
一,可进行链式调用,且每次 then 返回了新的 Promise(2次打印结果不一致,如果是同一个实例,打印结果应该一致。
二,只输出第一次 resolve 的内容,reject 的内容没有输出,即 Promise 是有状态且状态只可以由pending -> fulfilled或 pending-> rejected,是不可逆的。
三,then 中返回了新的 Promise,但是then中注册的回调仍然是属于上一个 Promise 的。
Promise.resolve 传入的参数类型
1.参数是promise实例,直接返回这个实例本身,不做处理。
2.参数是一个thenable对象,即其中实现了then方法。则会将此对象生成为一个promise,状态为resolved,并调用其then方法。
3.参数是一个原始类型的数据,则直接返回一个状态为resolved的promise,并将改参数传入resolved函数处理。
4.参数为空,则直接返回一个状态为resolved的promise