Promise 是ES6提供的一种用来解决异步编程的解决方案
示例:
const p=new Promise((resolve,reject)=>{
//异步
setTimeout(()=>{
console.log(111);
//,在此相当于直接调用下面then的两个箭头函数,
//then里面的两个函数可以理解为,分别是resolve和reject函数的函数体。
// resolve('哈哈哈,狗子你好');//修改promise的状态
reject('狗子,再接再厉');
},1000);
});
p.then((msg)=>{//成功的回调
console.log('成功:',msg);
},(err)=>{//失败的回调
console.log('失败:',err);
})
要点:
1)需要传递一个回调函数作为参数
回调函数可以接收两个参数(函数):
resolve 调用之后,可以将promise的状态修改为成功
reject 调用之后,可以将promise的状态修改为失败
2)内部保存异步操作
3)有三种状态
pending 进行中
fulfilled 已成功
rejected 已失败
4)状态一旦改变,不可逆
pending---- fulfilled resolved 成功
pending----rejected rejected 失败
5)一旦执行,不可取消。立即执行
目的:
将异步操作以同步操作的流程表达出来