探索Promise异步模式抽象的变体——Promise.race篇

在这里插入图片描述

如果阅读有疑问的话,欢迎评论或私信!!
本人会很热心的阐述自己的想法!谢谢!!!

文章目录

  • 前言
  • 初识Promise.race
  • 探索Promise.race
  • API实例

前言

在本栏前一篇Promise.all中,我们可以实现多个并发Promise的运行。但是,在有的时候我们或许要实现多个Promise中只取完成最快的Promise。这时我们可以使用Promise中另外一个API——Promise.race

初识Promise.race

我们在获取多个Promise其中的一个时:

  • 我们有一个词语“门闩(shuan)”,(我也是问了一下度娘,嘻嘻);
  • 又有些像操作系统中,我们在并发进程里叫的“互斥”(即每次只让一个进程运行);
  • 但在Promise中我们称为“竞态”

好吧,名称只需要记忆即可,我们来正式认识这个API。

探索Promise.race

Promise.race()和Promise.all()一样也接受单个数组参数(数组可以是Promise、立即值),立即值在这里没有意义,因为它会立即决议

注意:Promise.race参数如果是空数组,那么它会一直挂起,而从不决议。如下所示:

    Promise.race([]).then(function(msg){console.log(msg)},function(err){console.error(err)})//控制台不输出

而Promise.all中的行为却表现的相反:

    Promise.all([]).then(function(msg){console.log(msg)},function(err){console.error(err)})//控制台输出[]

API实例

回顾之前Promise解决信任问题的一个代码:

function timeoutPromise(delay){return new Promise(function(resolve,reject){setTimeout(function(){reject("超时了");},delay)})
})

下面我们用这个代码和Promise.race同用,看看会出现什么效果:

Promise.race([test(),timeoutPromise(3000)
]).then({function(){//只有没有超时才会进入}function(err){}
})

看来这个API至少可以为我们提供设置超时的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌最新黑科技:Gemini 1.5携100万Token挑战AI多模态极限

最近科技圈再次迎来震撼弹!除了火爆全球的openAI Sora文生视频模型外,谷歌发布了其大模型矩阵的最新成员——Gemini 1.5,一举将上下文窗口长度扩展至惊人的100万个tokens。这不仅仅是一个简单的数字增加,而是一次划时代的飞跃&…

万界星空科技电子机电行业MES系统,2000元/年起

电子行业在生产管理上具有典型的离散制造特点,采用多品种、多批量或单件的生产组织方式。产品升级换代迅速,生命周期短,变更频繁,版本控制复杂。 同时产品的种类较多,非标准产品多,加工工序复杂&#xff0…

三种标注格式VOC、COCO、YOLO及其转换

最近在做基于深度学习的目标检测,数据标注软件选择的LabelImg。 常用的几种标注格式及目录安排 一、VOC(标注文件xml结尾) 首先看一下VOC格式的分布: 在VOC这些文件夹中,我们主要用到: ① JPEGImages文件夹:图片 ②…

Dapp的优势与前景,具唯一性公开可追溯

​小编介绍:10年专注商业模式设计及软件开发,擅长企业生态商业模式,商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地;扶持10余个电商平台做到营收过千万,数百个平台达到百万会员,欢迎咨询。 在…

216699-36-4,6-Rhodamine X NHS ester,具有良好的脂溶性

117491-83-5,1890922-83-4,216699-36-4,6-Rhodamine X NHS ester,ROX SE, 6-isomer,6-ROX NHS 活化酯 您好,欢迎来到新研之家 文章关键词:117491-83-5,1890922-83-4,21…

【知识整理】Git Commit Message 规范

一. 概述 前面咱们整理过 Code Review 一文,提到了 Review 的重要性,已经同过gitlab进行CodeReview 的方式,那么本文详细说明一下对CodeReivew非常重要的Git Commit Message 规范。 我们在每次提交代码时,都需要编写 Commit Mes…

【C语言】指针变量未初始化

我们知道:全局变量未赋初值,编译器会直接赋值为0;局部变量如果未赋初值,则会维持上一状态保存在该地址上的值,这个值是随机的。把这个值赋值给局部变量是没有意义的。 但是指针变量是如何解决不赋初值? 指…

备战蓝桥杯—— 双指针技巧巧答链表2

对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…

编程学习线上提问现场解答流程,零基础学编程从入门到精通

编程学习线上提问现场解答流程 一、前言 之前给大家分享的一款中文编程工具,越来越多的学员使用这个工具学习编程。 在学习中有疑难问题寻求解答流程 1、可以在本平台留言或发私信联系老师 2、可以在群提问及时解答问题 3、通过线上会议的方式,电脑…

Hudi程序导致集群RPC偏高问题分析

1、背景 Hudi程序中upsert操作频繁,过多的删除和回滚操作,导致集群RPC持续偏高 2、描述 hudi采用的是mvcc设计,提供了清理工具cleaner来把旧版本的文件分片删除,默认开启了清理功能,可以防止文件系统的存储空间和文件数量的无限…

企业计算机服务器中了crypt勒索病毒怎么办,crypt勒索病毒解密数据恢复

计算机服务器设备为企业的生产运营提供了极大便利,企业的重要核心数据大多都存储在计算机服务器中,保护企业计算机服务器免遭勒索病毒攻击,是一项艰巨的工作任务。但即便很多企业都做好的了安全运维工作,依旧免不了被勒索病毒攻击…

MYSQL-入门

一.安装和连接 1.1 安装 mysql安装教程: 2021MySql-8.0.26安装详细教程(保姆级)_2021mysql-8.0.26安装详细教程(保姆级)_mysql8.0.26_ylb呀的博客-cs-CSDN博客 workbench安装: MySQL Workbench 安装及使用-CSDN博客 1.2 配…

有哪些适合程序员的副业

如果你经常玩知乎、看公众号(软件、工具、互联网这几类的)你就会发现,好多资源连接都变成了夸克网盘、迅雷网盘的资源链接。 例如:天涯神贴,基本上全是夸克、UC、迅雷网盘的资源链接。 有资源的前提下,迅雷…

LLM (Large language model)的指标参数

1. 背景介绍 我们训练大模型的时候,或者我们用RAG的时候,不知道我们的算法,或者我们的提示,或者我们的本地知识库是否已经整理得符合要求了。又或我们需要一个指标去评估我们目前的所有围绕大模型,向量数据库或外挂知…

git中将所有修改的文件上传到暂存区

案例: 我将本地的多个文件进行了修改,导致文件发生了变化。使用git status命令,查看文件的状态,发现有多个文件是modified,即被修改了。 本地文件发生了变化,需要将modified的文件添加到暂存区&#xff0c…

【计算机毕业设计】541鲜花商城系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

腾讯云宝塔Linux安装Mysql5.7

一、下载官方mysql包 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm二、安装mysql包 rpm -ivh mysql-community-release-el7-5.noarch.rpm三、安装mysql yum install mysql-community-server -y四、启动数据库 systemctl start mysqld.service…

华清远见作业第四十一天——Qt(第三天)

思维导图: 编程 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如…

开源免费大模型框架自己训练可根据关键词提示绘图的软件

开源免费大模型框架自己训练可根据关键词提示绘图的软件!大家都知道,市面上那些可以支持这种业务的大模型都是收费的,如果你是一个资深的大模型爱好者,并且有自己的打算和预算,想自己训练一套属于自己的大模型软件来完成日常的绘图…

C语言——指针——第1篇——(第19篇)

坚持就是胜利 文章目录 1.指针是什么2.指针和指针类型(1)指针 - 整数(2)指针 的 解引用 3.野指针(1)野指针成因1.指针未初始化2.指针越界访问3.指针指向的空间释放 (2)如何规避野指针1.指针初始化2.小心指针越界3.指针指向的空间…