浅谈Promise
promise的作用
promise是用来处理异步操作的。
Promise有三种状态
pending、resolved、rejected
只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
Promise两种状态变化
一旦状态改变,就不会再改变,任何时候都可以得到这个结果。Promise状态改变只有两种可能:从pending变为resolved和从pending变为rejected。只要这两种情况发生,状态就会凝固,会一直保持这个状态,不会再变了。
拿到异步操作的结果
可以通过.then(fn)拿到成功后的结果,也可以用.catch(fn)捕获异常。
优点
有了promise对象,就可以将异步操作以同步操作的流程表现出来,避免了层层嵌套的回调函数。
缺点
- 无法取消promise,一旦新建,它就会立即执行,无法中途取消;
- 如果不设置回调函数,promise内部执行的错误不会反映 到外部;
- 当处于pending状态时,无法得知目前进展到哪个阶段,是刚刚开始,还是即将完成。