const promise1 = Promise.resolve("First");
console.log(promise1)
const promise2 = Promise.resolve("Second");
console.log(promise2)
const promise3 = Promise.reject("Third");
console.log(promise3)
const promise4 = Promise.resolve("Fourth");
console.log(promise4)
const runPromises = async () => {
const res1 = await Promise.all([promise1, promise2]);
console.log(Object.prototype.toString.call(res1))
console.log('res1',res1)
const res2 = await Promise.all([promise3, promise4]);
console.log('res2',res2)
console.log('我可以执行吗')
return [res1, res2];
};
const promise = runPromises()
console.log('promise:',promise)
promise.then((res) => console.log(res))
.catch((err) => console.log(err))
结果:Promise {<resolved>: "First"}
Promise {<resolved>: "Second"}
Promise {<rejected>: "Third"}
Promise {<resolved>: "Fourth"}
promise: Promise {<pending>}
[object Array]
res1 (2) ["First", "Second"]
Third
解析:1、resolve、reject方法返回一个带状态的promise实例
2、all方法:有rejected的promise,直接执行then传入的reject方法或者catch传入的方法(参数是当前一
个值)没有rejected就执行then传入的resolve方法(参数是所有promise的值数组)
3、async和await是Promise.then的简写。async函数return的值是最后一次await之后的返回值,也就是最
后一次then方法中resolve或reject传出的值。