Promise.race 的原理
// race的原理
Promise.race = function(values){
return new Promise((resolve,reject)=>{
for(let i = 0 ; i< values.length;i++){
let current = values[i];
if((typeof current === 'object' && current !==null)|| typeof current == 'function'){
let then = current.then;
if(typeof then == 'function'){ // 比较哪个promise比较快,谁快用快
then.call(current,resolve,reject)
}else{
resolve(current);
}
}else{
resolve(current);
}
}
});
}
Promise.race 的原理的更多相关文章
- 理解和使用 Promise.all 和 Promise.race
一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Promise实例.同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回 ...
- (转载)理解和使用Promise.all和Promise.race
声明:本文转载自:https://www.jianshu.com/p/7e60fc1be1b2 一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Prom ...
- JavaScript中Promise 使用、原理以及实现过程
1.什么是 Promise promise 是目前 JS 异步编程的主流解决方案,遵循 Promises/A+ 方案. 2.Promise 原理简析 (1)promise 本身相当于一个状态机,拥有三 ...
- Promise内部实现原理
promise内部实现原理: function $Promise(fn) { // Promise 的三种状态 this.PENDING = 'pending' this.RESOLVED = 're ...
- Promise.race
[Promise.race] 返回最先完成的promise var p1 = new Promise(function(resolve, reject) { setTimeout(resolve, 5 ...
- 理解和使用Promise.all和Promise.race
一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Promise实例.同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回 ...
- Promise.all和Promise.race区别,和使用场景
一.Pomise.all的使用 常见使用场景 : 多个异步结果合并到一起 Promise.all可以将多个Promise实例包装成一个新的Promise实例.用于将多个Promise实例,包装成一个新 ...
- 理解Promise.all,Promise.all与Promise.race的区别,如何让Promise.all在rejected失败后依然返回resolved成功结果
壹 ❀ 引 我在 es6入门4--promise详解 这篇文章中有详细介绍Promise对象的用法,文章主题更偏向于对于Promise概念的理解与各方法基本使用介绍:而世上一个比较有趣的问题就是,即 ...
- Promise.allSettled & Promise.all & Promise.race & Promise.any All In One
Promise.allSettled & Promise.all & Promise.race & Promise.any All In One new Promise(), ...
随机推荐
- ionic使用自定义icon
参考文档:https://www.jianshu.com/p/5346fee9fd80 angular+ionic 自定义图标 注意: 这里不用name 用class类名显示出来 最后出来图标是个小 ...
- 利用 TensorFlow 入门 Word2Vec
利用 TensorFlow 入门 Word2Vec 原创 2017-10-14 chen_h coderpai 博客地址:http://www.jianshu.com/p/4e16ae0aad25 或 ...
- C# WPF 4.5 RibbonWindow
WPF RibbonWindow , Z .Net4.5里有自带的RibbonWindow,需要引用 System.Windows.Controls.Ribbon.dll 题外话:自带的Ribbon ...
- java设置RabbitMQ的消费处理出现:ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.
WARN 7868 --- [cTaskExecutor-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit messa ...
- gitlab+jenkins之环境搭建
文中用到的安装包都已经上传到百度网盘,下载地址在文章底部(还没传...) 前置条件: 为了节约配置时间,在正式配置前,应该先做好如下准备: 首先先把整个流程仔仔细细的看3遍,确认对配置整体的流程,配置 ...
- VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析
目录 目录 VMDK VDDK VixDiskLib VADP VMDK VMDK(VMware's Virtual Machine Disk Format,VMware 虚拟磁盘格式):简单来说就是 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_1_并发与并行
并发,相当于 一个人吃两个馒头,吃一口这个再吃一口另外一个.这里是cpu一会执行任务1,一会又执行任务2 并行,相当于两个人 吃两个馒头,各自吃各自的,这样速度就会快
- abstract 和 interface 抽象类和接口的区别
初版:以后再整理. 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需 ...
- 关于 5.4 Eloquent ORM first() 与 get() 判断是否为空
例如: $model = Model::first(); 可以通过is_null()来判断 $model = Model::get(); laravel自带了一个方法 $model->isEm ...
- TensorFlow学习笔记9-深度模型的优化
深度模型的优化 回顾概念: 代价函数时训练集上损失函数的平均: \[J(\theta)=E_{(x,y)\sim \hat{p}_{data}}L(f(x;\theta),y) \tag{1}\] 引 ...