Promise.race()方法
Promise.race()方法
Promise.race方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
const p = Promise.race([p1, p2, p3]);
上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。
Promise.race方法的参数与Promise.all方法一样,如果不是 Promise 实例,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步处理。
下面是一个例子,如果指定时间内没有获得结果,就将 Promise 的状态变为reject,否则变为resolve。
const p = Promise.race([fetch('/resource-that-may-take-a-while'),new Promise(function (resolve, reject) {setTimeout(() => reject(new Error('request timeout')), 5000)})
]);
p.then(response => console.log(response));
p.catch(error => console.log(error));
上面代码中,如果 5 秒之内fetch方法无法返回结果,变量p的状态就会变为rejected,从而触发catch方法指定的回调函数。
Promise.race()方法相关推荐
- es6 Promise.race()方法
Promise.race()方法 Promise.race方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例. const p = Promise.race([p1, p2, ...
- 【JS】Promise.race()方法例子流程详解
在理清Promise.all()中每个流程的时候实在是头大,理了半天,做此记录以便回顾 promise部分源码如下,只摘取用到的部分 function Promise(excutor) {const ...
- Promise:Promise.all、Promise.race、Promise.any的用法及区别
在项目开发过程中经常需要通过异步编程来实现功能,此时就需要我们了解Promise. Promise Promise 是异步编程的一种解决方案,比传统的解决方案回调函数和事件更合理和更强大. 有了Pro ...
- Promise.all、Promise.allSettled、Promise.any、Promise.race
Promise的实例方法拓展 Promise.all() :方法用于将多个 Promise 实例,包装成一个新的 Promise 实例. Promise.allSettled():用来确定一组异步操作 ...
- 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()方法用于将多 ...
- vue 手写签名_手写Promise/Promise.all/Promise.race(手写系列一)
背景 几个月没写文章了,愧对关注本专栏的小伙伴.最近有同学提议我出一个手写系列的文章对常见对前端工具.框架.设计模式做一个覆盖.同时有个要求:代码要尽量短小易懂,并且体现原理,让学习者学习过后能在未来 ...
- promise中的all和race方法
promise中的all方法和race方法 这两个方法,都是并行执行多个异步操作.而不同的是,all方式遵循"谁跑得慢,以谁为准执行回调",而race遵循的是"谁跑的快, ...
- Promise和Promise的方法
(Promise和Promise的方法) Promise是ES6一个伟大的发明,他使我们从回调地狱中能够走出来. 什么是Promise 从字面上来看,Promise就是一个承诺.那么,在ES6当中,P ...
- js实现promise.all promise.race promise.resolve
最近在准备面试,关于 promise 是面试的热点和考点.不定面试官心情好了就会让你写个 promise 的 api 废话不多说,下面是我写的代码,如有不严谨之处希望指出. promise.all 当 ...
最新文章
- Golang面向过程编程-函数
- ASP.NET Core快速入门(第5章:认证与授权)--学习笔记
- linux系统最大打开文件数(/etc/security/limits.conf:待更新其他设置)
- JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)
- Driver 初始化顺序
- 1.3、解析并创建ApplicationListener(ok)
- php 如果判断是utf,php 判断网页是否是utf8编码的方法_PHP教程
- SpringMVC实现AJax以及RestFull风格
- 训练集和测试集 — 模型评估
- 万能Ghost系统制作教程(转)
- 论文阅读 Glow: Generative Flow with Invertible 1×1 Convolutions
- 未来教育计算机三级数据库演示大题,2019年计算机三级数据库考试强化试题及答案003...
- 三元运算符 php_使用PHP三元运算符
- 微型计算机的一般工作过程,微型计算机的基本工作原理
- 安卓内存使用情况监控,剖析Android开发未来的出路在哪里,薪资翻倍
- C语言江苏大学校园导航系统
- 【解决方案】智慧工地AI视频远程集中监控解决方案是如何通过EasyCVR视频平台实现的?
- Android | 电脑cmd中使用adb命令安装apk
- xcode 下载中断问题
- Android 8.0一下热点启动