ES6中 Promise非常重要,好用,Promise是异步编程的一种解决方案.
举个栗子:有时候我们会进行多次axios请求,这些请求需要一定的顺序性,比如
这样的代码虽然不会出现问题,但是代码比较难看而且不易维护,Promise可以以一种非常优雅的方式来解决这个问题。
promise采用的是链式编程,如图是一个简单的promise栗子
这里将业务进行一定的拆分了,我们在(resolve,reject)=>{},1000)里写了定时任务,真正处理的却是调用resolve()后进入的 .then( ()=>{ } )里
分析:esolve, reject它们是什么呢? 通常情况下,我们会根据请求数据的成功和失败来决定调用哪一个。
当我们开发中有异步操作时, 就可以给异步操作包装一个Promise
异步操作之后会有三种状态
我们在看Promise的流程图时,发现无论是then还是catch都可以返回一个Promise对象。所以,我们的代码其实是可以进行链式调用的: 这里我们直接通过Promise包装了一下新的数据,将Promise对象返回了 Promise.resovle():将数据包装成Promise对象,并且在内部回调resolve()函数
Promise.reject():将数据包装成Promise对象,并且在内部回调reject()函数
如果我们希望数据直接包装成Promise.resolve,那么在then中可以直接返回数据 注意下面的代码中,我讲return Promise.resovle(data)改成了return data
结果依然是一样的
比如我们下一次的处理需要进行两次请求拿到数据才可以进行下一步的处理.