promise快速掌握与全局错误捕获
promise作为JavaScript中处理异步任务的api,真的非常好用,这里简单分享下个人学习的一些demo,以便快速理解。
promise具体概念就不多说了,可参考MDN文档
demo:
// 当没写catch 则会捕获,写了catch则不会捕获 window.addEventListener("unhandledrejection", (event) => { console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`); event.preventDefault(); // 增加阻止默认事件,阻止页面报错 // 通过addEventListener绑定的事件,不能通过return false来阻止默认行为 }); let p0 = new Promise((resolve, reject) => { setTimeout(() => { resolve("p0 success"); }, 1000); }); let p1 = new Promise((resolve, reject) => { resolve("p1 success"); }); let p2 = new Promise((resolve, reject) => { resolve("p2 success"); }); let p3 = Promise.reject("失败"); // promise.all 全部成功 settimeout Promise.all([p0, p1]) .then((result) => { console.log(result); // ['p0 success', 'p1 success'] }) .catch((error) => { console.log(error); }); // promise.all 全部成功 Promise.all([p1, p2]) .then((result) => { console.log(result); // ['p1 success', 'p2 success'] }) .catch((error) => { console.log(error); }); // promise.all 有一个失败 Promise.all([p1, p3, p2]) .then((result) => { console.log(result); // 不会走到这里 }) // catch是用来捕获promise错误 .catch((error) => { console.log(error); // 仅 打印 '失败' }); // promise.all 有一个失败,错误捕获写在 then第二个参数里 Promise.all([p1, p3, p2]).then( (result) => { console.log(result); // 不会走到这里 }, (error) => { console.log(error); // 仅 打印 '失败' } ); // promise.allSettled Promise.allSettled([p0, p1]) .then((result) => { console.dir(result); // [{status: 'fulfilled', value: 'p0 success'},{status: 'fulfilled', value: 'p1 success'}] }) .catch((error) => { console.log(error); }); let p5 = new Promise((resolve, reject) => { setTimeout(() => { resolve("p5 success"); }, 1000); }); let p6 = new Promise((resolve, reject) => { setTimeout(() => { reject("p6 failed"); }, 1500); }); // Promise.race Promise.race([p5, p6]) .then((result) => { console.log(result); // 仅打印p5 success }) .catch((error) => { console.log(error); }); let p7 = new Promise((resolve, reject) => { setTimeout(() => { resolve("p7 success"); }, 1500); }); let p8 = new Promise((resolve, reject) => { setTimeout(() => { reject("p8 failed"); }, 1000); }); Promise.race([p7, p8]) .then((result) => { console.log(result); }) .catch((error) => { console.log(error); // 仅打印 p8 failed });
参考文档:
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2020-05-22 js通过闭包实现多个相同事件只需绑定一次
2020-05-22 js实现函数防抖与节流
2018-05-22 jquery获取select多选框选中的值