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. jenkins自动化部署工具
  2. Chemistry.AI | 基于卷积神经网络(CNN)预测分子特性
  3. 【2012百度之星/资格赛】H:用户请求中的品牌
  4. Android调用系统拍照裁剪和选图功能
  5. matlab保存格式可以用cad打开文件,怎么将TXT文件导入CAD中生成图形
  6. 作者:郑纬民,男,清华大学教授、博士生导师,中国计算机学会理事长。
  7. Linux系统编程20:基础IO之从内核代码深刻理解Linux是如何管理文件及文件描述符的本质是什么
  8. Cascade R-CNN升级!目标检测制霸COCO,实例分割超越Mask R-CNN
  9. python程序设计和c语言_C 语言和 Python,该从哪个入门编程?
  10. clang命令编译c++程序时报错
  11. 2015 CCPC 这次,我为自己鼓掌
  12. python中raise stoplteration_Python 中的异常处理
  13. 网络安全基础知识笔记
  14. 中段尾段全段什么意思_排气管中段 尾段 全段 和芭蕉 是什么意思
  15. Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose (译文)
  16. 计算机桌面变窄,电脑桌面图标变小怎么调整
  17. 《C++ Concurrency in Action》笔记
  18. matlab显示变化的数字,如何在MATLAB中一起显示字符串和数字?
  19. AWS认证是什么意思?怎么报考?
  20. 使用Android Studio将开源库发布到Jcenter中央库

热门文章

  1. elk6.x之kibana展示GEOIP中文地图
  2. 百度上线搜索指数3.0含义
  3. 无可用的防病毒提供方,你的设备易受攻击
  4. 吴裕雄--天生自然 诗经:江城子·乙卯正月二十日夜记梦
  5. 《关于我怎么看待情人节这件事》
  6. 前端vue3.0小兔鲜 项目
  7. C/C++记录程序运行时间
  8. 看这一篇就可以入门了——游戏测试
  9. Leetcode答题 --- 独一无二的出现次数
  10. Oracle11g(RAC)补丁安装(31718723,31668908)