promise主要用于解决异步回调嵌套问题
- promise一旦新建就会立即执行,中途无法取消
- 当处于pending状态时,无法得知当前出于那一个状态,是刚开始还是刚结束
- 如果不设置回调函数,promise内部的错误就无法反映到外部
- promise封装ajax时,由于promise是异步,发送请求的三部会被延后到同步代码执行完毕,并且将相应回调延迟到现有有队列的最后,大量使用会降低请求效率。
如何避免promise中途无法取消的问题
axios可以避免
axios实现原理:Promise XMLHttpRequest.abort
结合Promise和XMLHttpRequest.abort实现,在内部新建一个promise对象,实现cancel方法(如果外部调用,则返回一个resolve),一旦外部触发终止机制就调用XMLHttpRequest.abort中断请求,同时向外部抛出异常。