javascript中的Promise使用
Promise基础
Promise是一种异步编程的解决方案,相对于回调函数方式构建异步编程实现简单易读性良好,回调函数的方式是将方法进行嵌套调用,最内层的方法返回数据将用于它的上一层回调,而promise通过then方法将嵌套做法转换成连续then,上一个then中返回一个promise实例,这个实例将返回resolve或者reject,以此来确定下一个then中执行的方法
Promise中保存着未来才会结束的事件。
Promise存在三种状态:
- pending
- fulfilled
- rejected
三种状态存在标准的顺序:
pending --> fulfilled
pending -->rejected
只能由pending转向fulfilled或者rejected,一旦由pending转换成其他状态,状态就会凝固不再发生任何变化
Promise使用
const promise = new Promise(function (resolve, reject) { resolve(value); // reject(err); // throw new Error(); }) promise.then(function(data) { --resolve执行后,调用这个 console.log(data); },function(err) { --reject执行后,调用这个 console.log(err); })
构造promise实例,Promise中传入一个方法构造器executor,executor中设置两个形参resolve和reject,在执行new Promise时会立即执行executor,执行后会出现成功态resolve或者失败态reject或者永远得不到明确的答复(既不返回resolve后者reject),到底是什么出现状态完全由我们自己决定。
resolve方法,在异步成功时调用,作用是将Promise对象的状态从pending转为fulfilled状态,并将成功的结果作为resolve参数传递出去。
reject方法,在异步失败时调用,作用是将Promise对象的状态从pending转为rejected状态,并将成功的结果作为resolve参数传递出去。
then方法将中传入两个方法作为形参,第一个参数为成功态时执行,第二个参数为失败态时执行,两个方法中皆有一个形参传入,这个形参为resolve或者reject中传入的参数这个是new Error()创建的错误信息。
Promise实例可以连续then,如果第一个then返回一个promise实例,这个实例的状态将会传递给下一个then中对应的方法中。
Promise中的executor中代码默认执行resolve或者reject后面的代码,可以使用return在resolve前面。