合肥建设网站查询系统,哪做网站好,设计网站设计网站,网站做法promise的静态方法相对简单#xff0c;这篇文章做个总结#xff0c;以便漏补缺总结如下#xff1a;1. Promise.all/Promise.anyPromise.allSettled/Promise.race都是接受数组#xff0c;数组里面是promise2.. Promise.all 接收的promise数组只要有一个失败那么整个就是失败…promise的静态方法相对简单这篇文章做个总结以便漏补缺总结如下1. Promise.all/Promise.anyPromise.allSettled/Promise.race都是接受数组数组里面是promise2.. Promise.all 接收的promise数组只要有一个失败那么整个就是失败进入cantch错误状态可以打印错误信息3.Promise.any可以看成all的反义方法它会打印最先成功的promise如果全部失败则会进入catch可以打印失败原因4.Promise.race race顾名思义打印最先完成的promise不论成功还是失败5.Promise.allSettled 不论成功和失败他都会打印相对来说这个方法在实际开发中反而挺有用的因为我们可以做筛选之类的方法名含义Promise.resolve(data)直接返回一个完成状态的任务Promise.reject(reason)直接返回一个拒绝状态的任务Promise.all(任务数组)返回一个任务任务数组全部成功则成功任何一个失败则失败Promise.any(任务数组)返回一个任务任务数组任一成功则成功任务全部失败则失败Promise.allSettled(任务数组)返回一个任务任务数组全部已决则成功该任务不会失败Promise.race(任务数组)返回一个任务任务数组任一已决则已决状态和其一致/*** 根据页码获取学生数据返回Promise* param {Number} page 页码*/
function fetchStudents(page) {return new Promise((resolve, reject) {setTimeout(() {if (Math.random() 0.3) {reject(new Error(网络错误获取第${page}页数据失败));return;}// 模拟学生数据const stus new Array(10).fill(null).map((d, i) ({id: NO.${(page - 1) * 10 i 1},name: 姓名${(page - 1) * 10 i 1},}));resolve(stus);}, Math.floor(Math.random() * 5000));});
}// 利用 fetchStudents 函数完成下面的练习// 获取1-10页的学生最终按照页码的顺序合并成一个数组任何一页的数据获取出现错误则任务不再继续打印错误消息const proms new Array(10).fill(1).map((it, i) fetchStudents(i 1));// Promise.all(proms)
// .then((result) {
// console.log(result.flat());
// })
// .catch((err) {
// console.log(err);
// });// 获取1-10页的学生最终按照页码的顺序合并成一个数组如果某些页码的数据获取失败就不加入该数据即可
// Promise.allSettled(proms).then((result) {
// result result
// .filter((r) r.status fulfilled)
// .map((it) it.value)
// .flat();
// console.log(result);
// });// 获取1-10页的学生打印最先获取到的数据如果全部都获取失败则打印所有的错误消息
// Promise.any(proms)
// .then((result) {
// console.log(result);
// })
// .catch((err) {
// console.log(err.errors);
// });// 获取1-10页的学生输出最先得到的结果有结果输出结果有错误输出错误
Promise.race(proms).then((result) {console.log(result);},(err) {console.log(err);}
);