⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

JavaScript Promise.any 竞态成功

Promise.any(ES2021):首个fulfilled即返回/Promise.allSettled所有完成/Promise.race最快完成(无论fulfilled/rejected)、AggregateError所有都rejected时抛出、实际应用(多CDN取最快资源) · 难度:入门 · +10XP

Promise.any —— 谁先成功就用谁的结果

ES2021的Promise.any:传入多个Promise,返回第一个fulfilled的结果。如果全部rejected,则抛出AggregateError。

对比Promise三兄弟

方法行为失败处理
Promise.all全部成功才成功一个失败就失败
Promise.race第一个完成的(无论成败)可能返回失败
Promise.any第一个成功的全部失败才失败

实战:多CDN容灾

const data = await Promise.any([
  fetch('https://cdn1.example.com/data.json'),
  fetch('https://cdn2.example.com/data.json'),
  fetch('https://cdn3.example.com/data.json'),
]); // 哪个CDN先返回就用哪个的结果

动手练习

  1. 基础练习:用Promise.any同时请求3个不同的API,用最快的那个结果。
  2. 进阶应用:实现"多备份CDN"策略——主CDN挂了自动用备份CDN。
  3. 项目实战:在关键资源加载中用Promise.any提高可用性。
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0