<script>
let p = new Promise(function(relsove, reject) {
console.log(123);
setTimeout(() => {
relsove();
}, 1000);
});
p.then(function(data) {
console.log("success", data);
}).catch(function() {
console.log("fail");
}).finally(function() {
console.log("over");
});
</script>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1bbc4a221fe1c7900d918b5b21703456.png)
Promise.all()
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
let p = new Promise(function(relsove, reject) {
console.log('p');
setTimeout(() => {
relsove();
}, 1000);
});
let p2 = new Promise(function(resolve, reject) {
setTimeout(() => {
console.log("p2");
resolve(786);
}, 2000);
});
Promise.all([p, p2]).then(function() {
console.log(123);
}, function() {
console.log(456);
});
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2ad3b12b79524d85ebdec18f5fc0d7e2.png)
Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
const p = Promise.race([p1, p2, p3]);
上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。
那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。