96SEO 2026-07-21 17:52 2
Promise.all是javascript中处理并发请求的主要方法。面试中经常会被要求手写实现,以考察对Promise状态机、异步处理还有数组遍历的掌握。
在动手写之前,先明确它的四个特性:

输入接收一个可迭代对象
返回返回一个新的Promise
成功条件只有当数组中所有的Promise都成功时新Promise才成功,并返回一个按顺序排列的结果数组
失败条件 只要有一个Promise失败。新Promise立即失败,并返回第一个失败的错误
/**
* 实现Promise.all
*
* @param promises 一个包含多个Promise实例的数组
* @returns 一个新的Promise实例,只有当所有传入的Promise实例都成功时才会成功,否则会在第一个失败的Promise实例时失败
*/
function promissAll: Promise {
// 1. 返回一个新的Promise实例
return new Promise => {
// 判断参数是否为可迭代对象
if {
return reject);}
const results: T =;老实说,// 用于存储每个Promise的结果
let completedCount = 0;老实说,// 用于跟踪已完成的Promise数量
const promiseArray = Array.from;// 将传入的参数转换为数组
const total = promiseArray.length;// 获取Promise的总数量
// 2. 如果传入的数组为空,立即resolve一个空数组
if {
resolve;return,}
// 3. 遍历每个Promise实例
promiseArray.forEach => {
// 使用Promise.resolve确保即使传入的不是Promise实例也能正确处理
Promise.resolve.n => {
results = value;// 存储当前Promise的结果
completedCount++;// 如果所有Promis都已完成,resolve结果数组
if {
resolve;}
},=> {
// 一旦有任何一个Promis实例失败。立即reject
reject;
})
})
})
}
. Q1:为什么不直接result.push?,
. Q3: Promise.resolve作用?请在评论区回复Q4: Fail-fase
const p1 = Promise.resolve;const p2 = new Promise => setTimeout => resolve,));const p3 =,//普通值
promissAll
.n)//输出:
.catch);const p4= Promis.reject;promissAll
.n)
.catch);//立即输出failed:"Error"
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback