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()方法相关推荐

  1. es6 Promise.race()方法

    Promise.race()方法 Promise.race方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例. const p = Promise.race([p1, p2, ...

  2. 【JS】Promise.race()方法例子流程详解

    在理清Promise.all()中每个流程的时候实在是头大,理了半天,做此记录以便回顾 promise部分源码如下,只摘取用到的部分 function Promise(excutor) {const ...

  3. Promise:Promise.all、Promise.race、Promise.any的用法及区别

    在项目开发过程中经常需要通过异步编程来实现功能,此时就需要我们了解Promise. Promise Promise 是异步编程的一种解决方案,比传统的解决方案回调函数和事件更合理和更强大. 有了Pro ...

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

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

  5. 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()方法用于将多 ...

  6. vue 手写签名_手写Promise/Promise.all/Promise.race(手写系列一)

    背景 几个月没写文章了,愧对关注本专栏的小伙伴.最近有同学提议我出一个手写系列的文章对常见对前端工具.框架.设计模式做一个覆盖.同时有个要求:代码要尽量短小易懂,并且体现原理,让学习者学习过后能在未来 ...

  7. promise中的all和race方法

    promise中的all方法和race方法 这两个方法,都是并行执行多个异步操作.而不同的是,all方式遵循"谁跑得慢,以谁为准执行回调",而race遵循的是"谁跑的快, ...

  8. Promise和Promise的方法

    (Promise和Promise的方法) Promise是ES6一个伟大的发明,他使我们从回调地狱中能够走出来. 什么是Promise 从字面上来看,Promise就是一个承诺.那么,在ES6当中,P ...

  9. js实现promise.all promise.race promise.resolve

    最近在准备面试,关于 promise 是面试的热点和考点.不定面试官心情好了就会让你写个 promise 的 api 废话不多说,下面是我写的代码,如有不严谨之处希望指出. promise.all 当 ...

最新文章

  1. Golang面向过程编程-函数
  2. ASP.NET Core快速入门(第5章:认证与授权)--学习笔记
  3. linux系统最大打开文件数(/etc/security/limits.conf:待更新其他设置)
  4. JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)
  5. Driver 初始化顺序
  6. 1.3、解析并创建ApplicationListener(ok)
  7. php 如果判断是utf,php 判断网页是否是utf8编码的方法_PHP教程
  8. SpringMVC实现AJax以及RestFull风格
  9. 训练集和测试集 — 模型评估
  10. 万能Ghost系统制作教程(转)
  11. 论文阅读 Glow: Generative Flow with Invertible 1×1 Convolutions
  12. 未来教育计算机三级数据库演示大题,2019年计算机三级数据库考试强化试题及答案003...
  13. 三元运算符 php_使用PHP三元运算符
  14. 微型计算机的一般工作过程,微型计算机的基本工作原理
  15. 安卓内存使用情况监控,剖析Android开发未来的出路在哪里,薪资翻倍
  16. C语言江苏大学校园导航系统
  17. 【解决方案】智慧工地AI视频远程集中监控解决方案是如何通过EasyCVR视频平台实现的?
  18. Android | 电脑cmd中使用adb命令安装apk
  19. xcode 下载中断问题
  20. Android 8.0一下热点启动

热门文章

  1. SQL Server (MSSQLSERVER)服务无法启动解决过程
  2. 魔术sql_魔术不会成为独角兽,这需要付出艰辛的努力
  3. ubuntu16.04使用全记录
  4. C/C++在VS2015下使用CURL下载文件
  5. C#第七回:DialogResult
  6. FBank创始人王宇哲:区块链使人类更加自由|筱静观察
  7. 【数据】客户端网游成功率分布
  8. 苹果8p如何投屏 手游投屏到电脑
  9. A One Smart 2.32版 皮肤检测仪安装包下载
  10. 媒体宣传的优势与重要性