promis all allSettled
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相关推荐
- all方法 手写promise_实现Promise.allSettled
离上次写了 Promise.all 实现之后,已经隔了,呃,快一年了... 为什么又想起来写 Promise 的其他静态方法的实现呢?原因是最近已经连续两次收到了某跳动公司的面试邀请了.想着虽然不一定 ...
- Promise.allSettled
Promise.allSettled是ES10的特性. 为什么会产生这个API? 在某些场景,我们可能会遇到多个异步操作并行执行.如果使用promise.all()的话,有一个promise报错的话, ...
- 【ES11(2020)】Promise 扩展 allSettled()
我们都知道 Promise.all() 具有并发执行异步任务的能力.但它的最大问题就是如果其中某个任务出现异常(reject),所有任务都会挂掉,Promise直接进入reject 状态. 但是,假如 ...
- Promise.all、Promise.allSettled、Promise.any、Promise.race
Promise的实例方法拓展 Promise.all() :方法用于将多个 Promise 实例,包装成一个新的 Promise 实例. Promise.allSettled():用来确定一组异步操作 ...
- Promise在各种场景的使用(Promise.all、Promise.allSettled、Promise.race、Promise.any)
1.共有三个接口,接口二要根据接口一返回的数据判断是否执行,接口二需要接口一的返回值作为参数:接口三要根据接口二返回的数据判断是否执行,接口三需要接口二的返回值作为参数. const getCatal ...
- 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()方法用于将多 ...
- Promise.all()、Promise.allSettled()、Promise.any()、Promise.race()用法与区别
概述 Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值 一个 Promise 必然处于以下几种状态之一: 待定(pending): 初始状态,既没有被兑现,也没有被拒绝. 已兑 ...
- vue2项目之async/await 处理 promis
async/await 处理 promis 请求函数 reqLogin(user) 返回一个 promise 对象,如果我们要获取该 promise 对象的值 PromiseResult,我们就需要用 ...
- promise的优点promise.all(),promise.race(),promise.allSettled()的原理
Promise也是使用回调函数,只不过是把回调封装在了内部,使用上一直通过 then 方法的链式调用,使得多层的回调嵌套看起来变成了同一层的,书写上以及理解上会更直观和简洁一些.Promise出现之前 ...
最新文章
- python中get和set使用_Python对象属性的set和get方法
- js通过月份判断前三个月_怀孕前三个月如何判断胎儿发育是否健康,看HCG翻倍情况,快收藏...
- 树莓派3B 系统安装及初始化配置教程
- python_0基础开始_day05
- Unity 3D 一个简单的角色控制脚本
- python 发送邮件解决所有乱码问题
- Teams Bot库的JSON
- php cdi_配置CDI对话的超时
- Elasticsearch 数据写入原理
- 【script】python字符串相似度匹配
- Javascript和JQuery函数定义方式
- [Windows] 集福宝- 支付宝 集福神器 2019
- C语言哈希表uthash的使用方法详解(附下载链接)
- 工业软件研究框架_【软件开发】工业软件相关学习信息
- Connection reset executing
- 【例题4-2 uva489】Hangman Judge
- 北大「通班」!AI界泰斗朱松纯领衔、IEEE Fellow 陈宝权出任副院长
- Python基础之 3. 容器:字符串、列表、元组、字典
- 什么是DCS系统?DCS和SCADA的区别
- 微信公众号获取用户当前地址经纬度
热门文章
- PS基础操作-抠图与导出-学习记录
- Linux常见文件后缀以及重要的文件夹
- 树莓派开发 --- 环境搭建
- R语言生存分析之COX比例风险模型构建及列线图(nomogram)、校准曲线(calibration curve)绘制示例
- 解决 ubuntu图形界面无法打开,全屏都是【ok】,linux磁盘空间不足,pycharm添加桌面快捷方式,pip无法安装python库,火狐无法联网
- Qt判断摄像头是否被占用的一种方式
- iframe的高度自适应
- ajax的全局方法,jQuery之使用ajaxSetup()方法设置全局Ajax默认选项
- PHP encoder是什么意思,adobe media encoder是什么软件
- 华为发布会直播鸿蒙,2021 华为智能协作春季发布会直播(视频)