/*
Promise 有三种状态:进行中 已成功 已失败 promise的状态一旦固定了就永远不会改变
用法
const p1=new Promise((resolve,reject)=>{
// 已成功
resolve()
// 已失败
reject()
}).then(res=>{
// 监听成功
}).catch(err=>{
// 监听失败
})
*/
const p1 = new Promise((res, rej) => {
// 成功
res("消化");
// 失败
rej("小蓝");
});
// 已成功
console.log(p1, 3);
// 只有已成功才会走 then
p1.then((res) => {
console.log(res, 1);
}).catch((err) => {
console.log(err, 2);
});
function p4() {
return new Promise((res) => {
setTimeout(() => {
res("小花");
}, 1000);
});
}
function p2() {
return new Promise((res, rej) => {
setTimeout(() => {
rej("失败了");
res("小蓝");
}, 2000);
});
}
function p3() {
return new Promise((res) => {
setTimeout(() => {
res("小黑");
}, 3000);
});
}
// p1 p2 p3 全都执行成功 200 我再拿到返回值
Promise.all([p4(), p2(), p3()])
.then((res) => {
console.log(res, 3);
})
.catch((err) => {
console.log(err, 4);
});
Promise.race([p4(), p2(), p3()])
.then((res) => {
console.log(res, 5);
})
.catch((err) => {
console.log(err, 6);
});