promise是ES6引入的异步编程的新的解决方法,从语法上来说就是一个构造函数,可以实例化对象,封装异步操作,获取成功和失败的结果,优点是支持链式调用,解决回调地域。
Promise 对象有三种状态: pending , fulfilled 和 rejected . 只有异步操作的结果, 可以决定当前是哪一种状态, 其他任何操作都无法改变这个状态。一旦状态改变, 就不会再变, 任何时候都可以得到这个结果. Promise 对象的状态改变, 只有两种可能: 从 pending 变为 fulfilled 和从 pending变为rejected. 这两种情况发生, 状态就凝固了, 会一直保持这个结果, 这时就称为 resolved(已定性).
Promise也有一些缺点。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪一个阶段。