凡科建站相关链接建筑模板做凳子

web/2025/10/2 17:59:43/文章来源:
凡科建站相关链接,建筑模板做凳子,杭州网站建设模板,奎屯市网站【ES6.0】- Promise对象 文章目录 【ES6.0】- Promise对象一、概述二、Promise状态三、Promise方法3.1 Promise.prototype.then方法#xff1a;链式操作3.2 Promise.prototype.catch方法#xff1a;捕捉错误3.3 Promise.race方法#xff1a;捕捉错误3.4 Promise.any()3.5 Pr…【ES6.0】- Promise对象 文章目录 【ES6.0】- Promise对象一、概述二、Promise状态三、Promise方法3.1 Promise.prototype.then方法链式操作3.2 Promise.prototype.catch方法捕捉错误3.3 Promise.race方法捕捉错误3.4 Promise.any()3.5 Promise.all()3.6 Promise.allSettled() 四、总结 一、概述 Promise是异步编程的一种解决方案是一种javascript处理异步操作的一种常见方式。Promise是一种处理异步操作的设计模式提供了一种更结构化更可靠的方式来处理异步任务。 二、Promise状态 Promise异步操作有三种状态pending(进行中)、fulfilled(已成功)和rejected(已失败)。除了异步操作的结果任何其他操作都无法改变状态。 Promise对象只有从pending变为fulfilled和从penging变为rejected的状态改变。只要处于fulfilled和rejected,状态就不会再变为resolved (已定型)。 Promise状态演示 const pm1new Promise(function(resolve,reject){resolve(resolve1)resolve(resolve2) })const pm2new Promise(function(resolve,reject){resolve(resolve3)reject(reject1) })pm1.then(function(value){console.log(pm1-then-value,value) //resolve1 })pm2.then(function(value){console.log(pm2-then-value,value) // resolve3 })状态的缺点 无法取消Promise,一旦新建它就会立即执行无法中途取消。如果不设置回调函数Promise内部抛出的错误不会反应到外部。当处于pending状态时无法得知目前进展到哪一个阶段。 三、Promise方法 3.1 Promise.prototype.then方法链式操作 Promise.prototype.then方法返回的是一个新的Promise对象因此可以采用链式写法 const pm1new Promise(function(resolve,reject){resolve(resolve-01) }) pm.then(function(value){console.log(value)return value-02 }).then(function(value){console.log(value)return value-03 }).then(function(value){console.log(value) })输出结果 resolve-01 resolve-01-02 resolve-01-02-03上面的代码使用then方法依次指定了两个回调函数。第一个回调函数完成以后会将返回结果作为参数传入第二个回调函数第二个回调函数完成以后会把返回值作为参数出入给第三个回调函数依次直至结束。 如果前一个回调函数返回的是Promise对象这个时一个回调函数就会等待该Promise对象有了运行结果才进一步调用 const pmFun(param){return new Promise((resolve,reject){setTimeout((){if(param100){resolve(输入值100,传入值为:param)}else{reject(输入值100,传入值为:param)}},2000)}) } pmFun(50).then((resp){console.log(then-1,resp)return pmFun(83) }).then((resp){console.log(then-2,resp) })输出结果 输入值100,传入值为:50 输入值100,传入值为:82Promisei的这种设计使得嵌套的异步操作可以被很容易得到改写从回调函数的“横向发展”改为“向下发展”。 3.2 Promise.prototype.catch方法捕捉错误 Promise.prototype.catch方法是Promise.prototype.then(null,rejection)的别名用于指定发生错误时回调函数。 const pmFun(param){return new Promise((resolve,reject){setTimeout((){if(param100){resolve(输入值100,传入值为:param)}else{reject(输入值100,传入值为:param)}},2000)}) } pmFun(50).then((resp){console.log(then-1,resp)return pmFun(83) }).then((resp){console.log(then-1,resp) }).catch((resp){console.log(catch,resp) })Promise对象的错误具有“冒泡”性质会一直向后传递直到被捕捉为止也就是说错误总是会被下一个catch语句捕捉。 3.3 Promise.race方法捕捉错误 Promise.race()方法允许我们同时发起多个异步操作并在其中一个操作解决fulfilled或拒绝rejected时得到结果。它的语法如下 Promise.race([promise1,promise2,..])其中promise1,promise2等为Promise对象数组。新的Promise的状态将与第一个解决或拒绝的Promise的状态相同。 const p1new Promise((resolve,reject){setTimeout(resolve,2000,one) }) const p2new Promise((resolve,reject){setTimeout(resolve,1000,two) }) const p3new Promise((resolve,reject){setTimeout(resolve,3000,three) }) const p3new Promise((resolve,reject){setTimeout(resolve,3000,three) }) Promise.race([p1,p2,p3]).then((resp){console.log(then,resp) }).catch((resp){console.log(catch,resp) })运行结果 then tworace函数返回一个Promise,它将与第一个传递的promise相同的完成方式被完成。它可以是完成resolves,也可以是失败rejects,这要取决第一个完成的方式是两个中的哪个。 如果传的迭代是空的则返回的 promise 将永远等待。 如果迭代包含一个或多个非承诺值和/或已解决/拒绝的承诺则 Promise.race 将解析为迭代中找到的第一个值。 race在遇见立即执行的reject时并没有像any一样继续等待resolve的返回而是直接返回了reject的内容。 3.4 Promise.any() Promise.any()接收一个由Promise所组成的可迭代iterable对象该方法会返回一个新的promise,一旦迭代对象内的任意一个promise变成了兑现状态那么由该方法所有返回的promise就会变成兑现状态并且它的兑现值就是可迭代对象内的首先兑现的promise的兑现值。 如果可迭代对象内的promise最终都没有兑现即所有 promise 都被拒绝了,那么该方法所返回的 promise 就会变成拒绝状态并且它的拒因会是一个 AggregateError 实例这是 Error 的子类用于把单一的错误集合在一起。 const p1new Promise((resolve,reject){setTimeout(resolve,2000,one) }) const p2new Promise((resolve,reject){setTimeout(resolve,1000,two) }) const p3new Promise((resolve,reject){setTimeout(resolve,3000,three) }) const p4new Promise((resolve,reject){reject(P4-reject) }) Promise.race([p1,p2,p3,p4]).then((resp){console.log(then,resp) }).catch((resp){console.log(catch,resp) })tren,two只要参数实例有一个变成fulfilled状态包装实例就会变成fulfilled状态如果所有参数实例都变成rejected状态包装实例就会变成rejected状态。 Promise.any()和Promise.race()方法很像只有一点不同就是Promise.any()不会因为某个Promise变成rejected状态而结束必须等到所有参数Promise变成rejected状态才会结束。 3.5 Promise.all() Promise.all()方法接收一个 Promise的iterable类型的输入。并且只返回一个Promise实例那个输入的所有promise的resolve回调的结果是一个数组。 Promise的resolve回调执行是在所有输入的promise的resolve回调都结束或者输入的iterable里没有promise了的时候。 它的reject回调执行时只要任何一个输入的promise的reject回调执行或者执行或者输入不合格的promise就会立即抛出错误并且reject的是第一个抛出的错误信息。 var p1 new Promise((resolve, reject) {setTimeout(resolve, 1000, p1-one); }); var p2 new Promise((resolve, reject) {setTimeout(resolve, 2000, p2-two); }); var p3 new Promise((resolve, reject) {setTimeout(resolve, 3000, p3-three); }); var p4 new Promise((resolve, reject) {setTimeout(resolve, 4000, p4-four); }); var p5 new Promise((resolve, reject) {reject(reject); });Promise.all([p1, p2, p3, p4, p5]).then(values {console.log(values); }, reason {console.log(reason) });then [p1-one,p2-two,p3-three,p4-four]Promise.all()主要应用需要所有异步任务都同时进行并且完成时可以使用all方法。 3.6 Promise.allSettled() Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的pronise,并带有一个对象数组每个对象表示对应的promise结果。 当您有多个彼此不依赖的异步任务成功完成时或者您总是想知道每个promise的结果时通常使用它。 相比之下Promise.all()更适合彼此相互依赖或者在其中任何一个reject时立即结束。 var p1 new Promise((resolve, reject) {setTimeout(resolve, 4000, p1-one); }); var p2 new Promise((resolve, reject) {setTimeout(resolve, 3000, p2-two); }); var p3 new Promise((resolve, reject) {setTimeout(resolve, 2000, p3-three); }); var p4 new Promise((resolve, reject) {setTimeout(resolve, 1000, p3-four); }); var p5 new Promise((resolve, reject) {reject(p5-reject); });Promise.allSettled([p1, p2, p3, p4, p5]).then(values {console.log(values); }, reason {console.log(reason) });then [{status:fulfilled,value:p1-one},{status:fulfilled,value:p2-two},{status:fulfilled,value:p3-three},{status:fulfilled,value:p4-four},{status:rejected,value:p5-reject}]一旦所指定的 promises 集合中每一个 promise 已经完成无论是成功的达成或被拒绝未决议的 Promise将被异步完成。那时所返回的 promise 的处理器将传入一个数组作为输入该数组包含原始 promises 集中每个 promise 的结果。 对于每个结果对象都有一个 status 字符串。如果它的值为 fulfilled则结果对象上存在一个 value 。如果值为 rejected则存在一个 reason 。value或 reason 反映了每个 promise 决议或拒绝的值。 可以发现和all相比allSettled在其中一个promise返回错误时还可以继续等待结果。并且不管内部的计时器定时多少毫秒它都会等所有结果返回后按照传参传入的顺序返回promise结果。 四、总结 根据不同场景选择 Promise.all、Promise.race、Promise.allSettled 和 Promise.any 四个方法合适的使用。

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

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

相关文章

做网站最省钱中铁建设集团

在模拟或设计软件中创建道路并指定其特征是一个复杂但必要的过程,尤其是在进行交通模拟、城市规划或道路设计项目时。以下是一个步骤化的指南,用于说明如何创建道路特征: 水平剖面: 使用设计软件的绘图工具来绘制道路的中心线或边…

wordpress多站点 用户四川学校网站建设

antlr4 代码 语法树DSL是很酷的东西,但我不清楚它们有什么用。 然后我意识到它们对以下方面有好处: 摆脱复杂的UI 意思是 更快的做事方式 而已。 当我阅读此博客时,我得出了这个结论。 如果您的用户是技术人员,并且不惧怕类…

服装网站开发手机网站推荐哪些

来源:计算机研究与发展前 言近几年来人工智能技术的飞速发展使得其应用迅猛扩大,而传统的计算机体系结构对于面向人工智能的应用在处理速度、能耗、使用的方便性等方面有着诸多不足。随着人工智能应用的发展,面向人工智能的体系结构成为体系结…

有无广告销售版本"有广告免费无广告收费"网站短网址还原在线生成

最近在网上看到了荧光图,觉得挺帅气,去网上查询了怎么制作荧光图,发现大部分都是QGIS的教程,作为ArcGIS的死忠用户,决定在ArcGIS Pro中实现,其实挺简单的。 1、软件:ArcGIS Pro3.0 2、点数据&a…

班级网站建设首页报告怎样弄一个自己的平台

一、模块题目 二、原理图 1、数码管

响应式网站图片代码板瓦工安装wordpress

上一篇文章介绍到 servicemanager 的 main 函数中主要做了四件事: 1)初始化 binder 驱动。 2)将自身以“manager”添加到 servicemanager 中的 map 集合中。 3)注册成为 binder 驱动的上下问管理者。 4)给 Looper 设置 callback,进入无限循环,处理 client 端发来的请求。…

网站后台管理系统进入php做直播类型的网站

文章目录 0.前言1.模型下载2.配置环境2.1 下载项目文件2.2 配置环境 3.开始推理4.总结 0.前言 本博客将介绍ChatGLM3-6B大模型在Ubuntu上的本地部署教程 1.模型下载 由于毛毛张的服务器服务无法科学上网,所以模型的相关文件必须现在本地下载好,再上传到…

石家庄专业网站制北京网站建立

docker 概念 -云计算的基石 docker的一个软件: 开源 docker基本组成 docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上); docker仓库(Registry):用来保存各种打包好的软件镜像&a…

常用的网站推广装修公司起名

概述 基于Flume MongoDB,对现有的多个应用系统进行日志采集。特点 采集范围每一次用户请求的请求信息。数据量大尽量减少现有系统的改动数据流图 说明:首先考虑的结构体系,是直接在应用系统中,将日志数据写到Flume;但…

群晖 做网站服务器营销网站建设哪里便宜

本文记录Windows环境下的MongoDB安装与使用总结。 【1】官网下载 官网下载地址:Download MongoDB Community Server | MongoDB 这里可以选择下载zip或者msi,zip是解压后自己配置,msi是傻瓜式一键安装。这里我们分别对比进行实践。 【2】ZI…

网站的盈利方式志愿服务网站开发

文章目录 前言 概念 算法 训练 性能 应用 参考资料 前言 见《初试人工智能》 概念 人工智能系统(artifieial intelligence system),针对人类定义的给定目标,产生诸如内容、预测、推荐或决策等输出的一类工程系统。该工程系…

备案期间 需要关闭网站吗seo每天一贴

Spring的IOC容器初始化流程 IOC容器初始化在SpringApplication对象创建完毕执行run方法时执行refreshContext()时开始。 准备BeanFactory,设置其类加载器和environment等 执行BeanFactory后置处理器,扫描要放入容器的Bean信息,得到对应的Bea…

网站关键词没排名怎么办领秀网站建设

保存token的最佳方式取决于具体的应用场景和需求。以下是几种常见的保存token的方式及其优缺点,以便您根据实际情况进行选择: HTTP Only Cookies: 优点:Cookies可以自动随HTTP请求发送,且HTTP Only属性可以防止JavaS…

用ps做美食网站母婴网站源码 带采集

C OJ基础 在学校学习C程序设计基础课程的OJ题目 缺少第二十题 这里写目录标题 C OJ基础习题练习(一)打印图形习题练习(二)数据的输入输出习题练习(三)函数重载习题练习(四)设计矩形类习题练习(五)定义Tree类习题练习(六)完善职工工资类Salary的设计习题练习(七)设计矩形类recta…

自建购物网站多少钱有没有做cad单的网站

目录 安装Docker 安装yum工具 更新本地镜像源 安装docker 启动docker 关闭防火墙 docker启动命令 配置镜像加速 docker的使用 拉取nginx 查看本地镜像 把镜像文件nginx导出成tar文件 查看是否导出成功 ​编辑 删除本地镜像nginx:latest 导入镜像文件nginx 拉取…

北京南站地铁线路图郑州市网络设计公司

科目编号:8663 座位号 2017-2018学年度第二学期期末考试 老年保健按摩试题 2018年7月 一、名词解释(本大题共5小题,每小题4分,共计20分) 1.骨度分寸法: 2.三叉神经痛: 3.间接标志法&#xff…

江苏省建设厅网站资质升级wordpress安装错误310

项目介绍 采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…

冀州建网站亚马逊海外网站

1.语言的根本属性 语言的根本属性,通常指的是那些使语言区别于其他任何形式的信息传递系统的本质特征,以下是一些关键的根本属性: 社会性:语言首先是人类社会的产物,是社会成员之间进行思想交流和信息传递的主要工具&…

南京高新区规划建设局网站江西sem

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道…

环境设计专业网站网站开发上线ftp怎么用

各位少年,大家好,我是博主那一脸阳光,今天分享结构体的使用,声明以及操作符的使用。 前言: 如果你想做一块月饼,你要学习它的制作方法,需要准备面粉,白砂糖,奶粉&…