ES6 Promise(2) 基本用法
创建Promise
Promise
对象是由关键字 new
及其构造函数来创建的。该构造函数会把一个叫做“处理器函数”(executor function)的函数作为它的参数。这个“处理器函数”接受两个函数——resolve
和 reject
——作为其参数。当异步任务顺利完成且返回结果值时,会调用 resolve
函数;而当异步任务失败且返回失败原因(通常是一个错误对象)时,会调用reject
函数。

上面的myPromise 是一个Promise对象。它将拥有Promise的一些方法。

上例运行的结果。
按照上面的思路,如果我们想让某个函数拥有promise的功能,只需要让它的返回值是一个Promise对象就可以了。比如

示例1
10秒之后,在页码上打印当前时间。

提示
不要尝试着在Promise里面写定时器,那样是没有效果,因为只要调用了resolve或reject,说明我们这个promise已经结束了。如果想加入定时器,参见示例2.
示例2
每隔1秒,在页码上打印出当前时间。

运行效果:

示例3
ajax请求。下面是用Promise来实现ajax请求。

运行结果:

为什么要用promise
011、回调地狱 + 异步同步事件调用顺序带来的双重伤害对于Promise的执行很好的规范了对于复杂的嵌套回调的写法,并且对于异步事件的执行顺序也是更加清晰。
022、回调事件的分离
Promise有三种状态:未定(pending)、接受(fulfillment)和拒绝(rejection)。并且,只能由未定状态变为接受状态,或者由未定状态变为拒绝状态。
只有调用resolve或reject回调函数时,这个Promise的状态才能从未定向其他两个状态改变。并且可以将异步操作的函数分离出来,提高了复用性。