function all(results) {

let result = new Array(results.length); // 存储返回结果

let counter = 0; // 计数器

return new Promise((resolve,reject)=> {

function processData(i,data) {

result[i] = data;

// 计数器判断是否全部执行完成;

if (++counter === results.length) {

resolve(result);

}

}

for (let index = 0; index < results.length; index++) {

const element = results[index];

if (element instanceof Promise) {

// then 两个参数是成功回调,失败回调

element.then(res => {

processData(index,res);

},reject);

} else {

processData(index,element);

}

}

});

}

all 返回的是promise的结果列表;

allSettled 返回的是promis对象组成的列表;

[

{ status: 'rejected', reason: error },

{ status: 'fulfilled', value: res }

]

promis all allSettled相关推荐

  1. all方法 手写promise_实现Promise.allSettled

    离上次写了 Promise.all 实现之后,已经隔了,呃,快一年了... 为什么又想起来写 Promise 的其他静态方法的实现呢?原因是最近已经连续两次收到了某跳动公司的面试邀请了.想着虽然不一定 ...

  2. Promise.allSettled

    Promise.allSettled是ES10的特性. 为什么会产生这个API? 在某些场景,我们可能会遇到多个异步操作并行执行.如果使用promise.all()的话,有一个promise报错的话, ...

  3. 【ES11(2020)】Promise 扩展 allSettled()

    我们都知道 Promise.all() 具有并发执行异步任务的能力.但它的最大问题就是如果其中某个任务出现异常(reject),所有任务都会挂掉,Promise直接进入reject 状态. 但是,假如 ...

  4. Promise.all、Promise.allSettled、Promise.any、Promise.race

    Promise的实例方法拓展 Promise.all() :方法用于将多个 Promise 实例,包装成一个新的 Promise 实例. Promise.allSettled():用来确定一组异步操作 ...

  5. Promise在各种场景的使用(Promise.all、Promise.allSettled、Promise.race、Promise.any)

    1.共有三个接口,接口二要根据接口一返回的数据判断是否执行,接口二需要接口一的返回值作为参数:接口三要根据接口二返回的数据判断是否执行,接口三需要接口二的返回值作为参数. const getCatal ...

  6. Promise.all、Promise.race、Promise.allSettled、Promise.any区别

    目录 1.Promise.all 2.Promise.race 3.Promise.allSettled 4.Promise.any 1.Promise.all Promise.all()方法用于将多 ...

  7. Promise.all()、Promise.allSettled()、Promise.any()、Promise.race()用法与区别

    概述 Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值 一个 Promise 必然处于以下几种状态之一: 待定(pending): 初始状态,既没有被兑现,也没有被拒绝. 已兑 ...

  8. vue2项目之async/await 处理 promis

    async/await 处理 promis 请求函数 reqLogin(user) 返回一个 promise 对象,如果我们要获取该 promise 对象的值 PromiseResult,我们就需要用 ...

  9. promise的优点promise.all(),promise.race(),promise.allSettled()的原理

    Promise也是使用回调函数,只不过是把回调封装在了内部,使用上一直通过 then 方法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及理解上会更直观和简洁一些.Promise出现之前 ...

最新文章

  1. python中get和set使用_Python对象属性的set和get方法
  2. js通过月份判断前三个月_怀孕前三个月如何判断胎儿发育是否健康,看HCG翻倍情况,快收藏...
  3. 树莓派3B 系统安装及初始化配置教程
  4. python_0基础开始_day05
  5. Unity 3D 一个简单的角色控制脚本
  6. python 发送邮件解决所有乱码问题
  7. Teams Bot库的JSON
  8. php cdi_配置CDI对话的超时
  9. Elasticsearch 数据写入原理
  10. 【script】python字符串相似度匹配
  11. Javascript和JQuery函数定义方式
  12. [Windows] 集福宝- 支付宝 集福神器 2019
  13. C语言哈希表uthash的使用方法详解(附下载链接)
  14. 工业软件研究框架_【软件开发】工业软件相关学习信息
  15. Connection reset executing
  16. 【例题4-2 uva489】Hangman Judge
  17. 北大「通班」!AI界泰斗朱松纯领衔、IEEE Fellow 陈宝权出任副院长
  18. Python基础之 3. 容器:字符串、列表、元组、字典
  19. 什么是DCS系统?DCS和SCADA的区别
  20. 微信公众号获取用户当前地址经纬度

热门文章

  1. PS基础操作-抠图与导出-学习记录
  2. Linux常见文件后缀以及重要的文件夹
  3. 树莓派开发 --- 环境搭建
  4. R语言生存分析之COX比例风险模型构建及列线图(nomogram)、校准曲线(calibration curve)绘制示例
  5. 解决 ubuntu图形界面无法打开,全屏都是【ok】,linux磁盘空间不足,pycharm添加桌面快捷方式,pip无法安装python库,火狐无法联网
  6. Qt判断摄像头是否被占用的一种方式
  7. iframe的高度自适应
  8. ajax的全局方法,jQuery之使用ajaxSetup()方法设置全局Ajax默认选项
  9. PHP encoder是什么意思,adobe media encoder是什么软件
  10. 华为发布会直播鸿蒙,2021 华为智能协作春季发布会直播(视频)