Promise
用于异步操作,它表示一个尚未完成且预计在未来完成的异步操作
优势:将异步操作以同步的流程表示出来,方便阅读
将数据请求和数据处理明确分开,结构明确好看。
不用它的话,代码的书写顺序和逻辑结构是不一致的(当有异步任务时)
三个状态:
pending:初始值
fulfilled:操作成功
rejected:操作失败
Pomise是一个构造函数,它里面有1个参数,该参数是一个函数,函数里面有两个参数,参数名我们一般用resolve,reject,这两个参数都是函数,是系统给我们提供的,我们直接调用就可以。
Promise封装异步操作
var p=new Promise(fucntion(resolve,reject){
$.ajax({
url:'xxx',
success:function(dsata){ resolve();
error:function(err){ reject();}
})
})
Promise异步操作结果处理
then方法 :返回的是Promise对象,不是Promise对象都会被包裹成Promise对象
catch方法:异步操作失败后会执行这个方法
注意的事项:resolve和reject只有第一次执行有效,多次调用没有任何作用,promise实例对象状态一旦改变就不能再变,而.then .catch方法可以被调用多次
任务执行顺序:
先判断任务是同步还是异步,先执行完同步任务,然后在去执行异步任务
异步任务分为:宏任务和微任务(.then,catch.finall目前的只有这三个),
执行一个宏任务过程中遇到微任务,将微任务放到微任务队列中,执行一个宏任务,执行当前队列中的所有的微任务
领取专属 10元无门槛券
私享最新 技术干货