首先,你得理解异步机制
Promise
是一种异步编程机制
new Promise(function(resolve,reject){});//其中resolve和reject是javascript引擎封装好的方法
Promise有三种状态pending(进行中)、fulfilled(已成功)和rejected(已失败)
Promise对象的状态改变,只有两种可能:从 pending 变为 fulfilled
和从 pending 变为 rejected
。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。
运行下面的例子
let pm=new Promise((resolve,reject)=>{
console.log('A');
resolve('B');//将Promise的状态从pending(进行中)变为resolved(已定型),异步
console.log('C');
})
//then是回调函数
pm.then(va=>{
//Promise成功后
console.log(va +'a');
},vb=>{
//Promise失败后
console.log(vb+'b');
});
//运行结果
A
C
Ba
在Promise里调用了resolve()函数,说明Promise的状态已到了成功状态,就可以异步执行pm.then(resoved => {},failed => {})里的resoved里的回调函数
Promise的 resolved(已定型) 还有多种表示形式,可以查看官方文档的promise章节
async
可以理解为多个Promise执行的组合(并发),并返回一个Promise