es6

ES6 promise对象

2017-02-22  本文已影响0人  碧玉疾风丶

对于promise对象的介绍有全面的文档支持,十分适合初学者学习:
阮一峰的es6入门

Promise特点###

SetTimeout的第三个参数###

其中文档的第一个例子,此处的setTimeout()有3个参数,代码可知,timeout()返回一个promise对象,并且在ms之后执行setTimeout,setTimeout的第三个参数作为resolve的参数传入:

Resolve/Reject参数###

node中运行如下代码,这里需要注意:在promise对象中resolve()的参数,会被传递给回调函数,即图中的res.success和result

异步操作嵌套###

如下图示,p1p2都为promise对象,但p1是p2的resolve参数,p2会等待p1有结果后执行
。现在对于p2两种结果的回调函数都存在,当不存在reject的回调时,会转入catch中,进行捕获

Promise的链式调用###

promise的then会返回一个新的promise对象,故其可以链式调用,下图可见,500ms的定时任务,resolved被传入第一个then(),其后返回了resolvedprom1,在由第二个then()输出结果

Promise中的catch()###

Catch的链式调用###

catch()返回的也是一个promise对象,故catch后面可以链式调用then()方法,不过catch只能捕获自己之前的异常,下图中第一个catch就没有捕获到异常


Promise.all()###

Promise.race()###

与promise.all()相反,只要有一个promise状态改变,就会立即返回给promise.race(),<u>该promise的返回值会传递给回调函数</u>

若干Promise.resolve()###

一般用promise.resolve()将现有对象转为Promise对象,几种情况如下

![]57B4.png](https://img.haomeiwen.com/i1759843/66624864e20b0ac0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

若干Promise.reject()###

promise.reject()也会返回一个promise对象,原理同上。不同的部分:对thenable的对象调用reject()后不会执行其then()方法,图中返回的e即为thenable对象

done()和final()的实现

~

最后附上demo链接:https://github.com/LiuYashion/ECMAScript6/

上一篇 下一篇

猜你喜欢

热点阅读