一、Promise的3种状态:
1、作用:了解Promise对象如何关联的处理函数,以及代码执行顺序
2、一个Promise对象,必然处于以下几个状态之一:
pending:初始状态,页面一旦调用Promise对象,Promise对象就会立刻处于pending状态
fulfilled:意味着操作成功完成
rejected:意味着操作失败完成
3、注意⚠️:Promise对象的状态一旦是fulfilled或者rejected,状态就无法再被改变,也就是说一旦是fulfilled状态,就无法再改为rejected状态。

const p = new Promise((resolve, reject) => {setTimeout(() => {resolve(1);//reject(2);}, 3000);});console.log(p);p.then(data => {console.log(data);}).catch(error => {console.log("我是Promise错误", error);})
一运行js,js会马上打印p对象,如果此时3秒内立马点击控制台的Promise对象,就是处于pending状态。也就是说,页面一旦调用Promise对象,Promise对象就会立刻处于pending状态。

就算3秒后setTimeout运行完了,也依然是pending状态。

只有当3秒后setTimeout运行完了,你再点击控制台的Promise对象,才会显示对应的fulfilled或者rejected状态。


const p = new Promise((resolve, reject) => {setTimeout(() => {resolve(3);reject(4);}, 3000);});console.log(p);p.then(data => {console.log(data);}).catch(error => {console.log("我是Promise错误", error);})
如果代码里同时写了resolve(3); reject(4); 最后只会执行resolve()方法,不会执行reject()方法。这就是Promise对象的状态一旦是fulfilled或者rejected,状态就无法再被改变。
