1. 首先Promise是一种异步编程的解决方案,它是一个容器,是一个对象,里面可以获取到异步操作(setTImeout,ajax等)的消息(setTimeout第三个参数的值, ajax成功返回的结果)。
2. Promise有个特点就是无法取消,一旦新建就会立即执行。
3. Promise如何将异步操作按同步方式写出来,个人觉得有两个方面
- 首先手动声明的Promise,如果有多个(n个),且它们(n-1个)作为了resolve的参数,那么这些Promise都会立即执行,但是异步操作的信息会根据resolve中Promise的树结构关系产生一定的顺序,如果前面的Promise都是resolve了,那么最后一个Promise的resolve也会继承倒数第二个Promise的resolve返回的信息(比如data)
- 第二种情况就是连续调用then方法,这种情况,每个then都会返回一个新的Promise对象,那么这一个Promise对应的then方法的回调会等待上一个Promise对象操作完成才会执行,而且上一个then的回调的返回值会变成下一个then的回调的实参, 注意如果回调函数中返回的还是一个Promise,则下一个then会等待这个新的Promise完成操作后才会执行对应的回调
4.注意调用then方法会返回一个pending状态的Promise