Promise是一种异步编程的解决方法,比传统的解决方法(回调函数和方法)更合理、更强大.
语法上Promise就是一个构造函数
Promise的三个状态
Pending: 进行中,不是成功 也不是失败
Fulfilled(Resolved) : 成功
Rejected : 失败
三种状态的变化有两种
Pending(进行中) => Fulfilled(成功)
Pending(进行中) => Rejected(失败)
使用
创建Promise实例
let p = new Promise((resolve, reject) => {
if (err) {
// 失败,
reject(err);
} else {
// 成功,
resolve(data);
}
}
Promise构造函数接受一个函数作为参数,这个函数有 resolve,reject 两个参数, 在异步操作成功的时候调用resolve , 异步操作失败调用reject
then
then方法可以接收两个回到函数作为参数
p.then(
(data) => { //成功后执行
console.log(data);
},
(err) => { //失败后执行
console.log(err);
}
);
async和await
async用于修饰一个函数,这个函数里面有异步的操作,返回一个Promise await只能在async修饰的函数内部使用,await后面永远是一个Promise
async function(){
let a = await fn()
return a
}
await返回的结果就是后面Promise对象返回的结果