promise详细的适用

promise

promise的理解

promise对象创建自身带有一个函数,函数中有两个参数(resolve和reject),这两个参数可以控制promise状态;
promise状态默认是pending待定状态,promise中可以通过resolve状态修改成fulfilled 成功状态,通过reject将状态修改成rejected 失败状态。(promise中代码报错也会触发失败状态),但是promise的状态只能保持一个。
promise方法有两种 为then()和catch()方法,使用promise方法可以获取promise状态所返回的结果,then()接收的是promise对象成功状态下的结果,catch()接收的是失败状态下的结果。

用来解决回调地狱,所谓回调地狱就是指把函数作为参数层层嵌套请求,这样层层嵌套,
人们称之为回调地狱,代码阅读性非常差

promise.resolve的三种情况

1.resolve(‘普通数据’)

let p = new Promise((resolve, reject) => {resolve('123')resolve(aa)})
p.then(res => {console.log(res); // '123'
})

传的是啥数据输出的就是啥数据

2.resolve(promise对象)

let p = new Promise((resolve, reject) => {resolve(p1 )})let p1 = new Promise((resolve, reject) => {reject('456')})p.catch(err => {console.log(err); // 456})

传入promise对象时 则最终结果都是根据传入的那个promise对象来进行输出的 如以上就会输出456

3.resolve(thenable也就是then方法)

const aa = { then:function(resolve,reject){resolve(42)} }let p = new Promise((resolve, reject) => {resolve(p1)})p.then(res =>{console.log(res); //42})

跟方法二一样

promise.all

let p1 = new Promise((resolve, reject) => {// resolve('123')resolve('123')})let p2 = new Promise((resolve, reject) => {// resolve('123')resolve('456')})let p3 = new Promise((resolve, reject) => {// resolve('123')resolve('789')})Promise.all([p1,p2,p3]).then(res =>{console.log(res); // ['123','45','789]}).catch(err => {console.log(err);})

当这几个promise都成功则触发.then

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

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

相关文章

PostgresSQL----基于Kubernetes部署PostgresSQL

【PostgresSQL----基于Kubernetes部署PostgresSQL】 文章目录 一、创建SC、PV和PVC存储对象1.1 准备一个nfs服务器1.2 编写SC、PV、PVC等存储资源文件1.3 编写部署PostgresSQL数据库的资源声明文件 二、部署PostgresSQL2.1 部署 PV、PVC等存储对象2.2 部署PostgresSQL数据库2.3…

php获取客户端ip地址及ip所在国家、省份、城市、县区

摘要 获取客户端ip地址&#xff0c;然后使用这个ip地址获取所在的国家、省份、城市&#xff0c;可以在网站中实现IP属地&#xff0c;发布地等功能。 本文的获取IP地址信息均采自网络上免费的IP查询网站&#xff0c;通过其API或者网页HTML解析出的ip地址信息。 代码 <?p…

【Git】Git 基础

Git 基础 参考 Git 中文文档 — https://git-scm.com/book/zh/v2 1.介绍 Git 是目前世界上最先进的分布式版本控制系统&#xff0c;有这么几个特点&#xff1a; 分布式&#xff1a;是用来保存工程源代码历史状态的命令行工具保存点&#xff1a;保存点可以追溯源码中的文件…

解决防火墙导致虚拟机不能ping通宿主机的问题

今天&#xff0c;无缘无故的&#xff0c;虚拟机突然用不了&#xff0c;网络连上不了&#xff0c;一番折腾翻找&#xff0c;最后才发现&#xff0c;是因为虚拟机ping不同宿主主机了&#xff0c;连网关都ping不通了&#xff0c;但是&#xff0c;宿主主机却可以ping通虚拟机 。 最…

Java基础:注解

注解的理解和类型 java注解-最通俗易懂的讲解 廖雪峰java注解 对注解&#xff08;Annotation&#xff09;最直接的理解是&#xff0c;注解本身就相当于一个附加信息&#xff0c;这个附加信息并不会对原有的类&#xff0c;方法等进行处理&#xff0c;进行处理的应该是对附加信息…

文本识别 (OCR)引擎之Tesseract的使用

Tesseract OCR Tesseract概述常见OCR识别平台下载安装配置命令使用语法测试验证 Tesseract的使用安装python库基本使用可能的异常更换语言字体库识别 Tesseract的训练 Tesseract 概述 Tesseract是一个开源文本识别 (OCR)引擎&#xff0c;是目前公认最优秀、最精确的开源OCR系统…

『Bug挖掘机 - 赠书02期』|〖Effective软件测试〗

大家好&#xff0c;我是洋子&#xff0c;前段时间给大家推荐了《测试设计思想》&#xff0c;今天再给大家推荐一本软件测试领域的新书 这本书就比较接地气了&#xff0c;是一本软件测试的入门书籍&#xff0c;但同样适用于1-3年软件测试经验的读者阅读 这本书第一章就用Java代…

如何实现负载均衡

在如今互联网应用日益火热的背景下&#xff0c;为了保证应用程序的高可用性和高性能&#xff0c;负载均衡变得越来越重要。负载均衡是指将传入的请求分配到多个服务器上&#xff0c;以避免单一服务器的过载&#xff0c;提高系统的可用性和性能。而PHP作为一种广泛使用的服务器端…

深入了解 Axios 的 put 请求:使用技巧与最佳实践

在前端开发中&#xff0c;我们经常需要与后端服务器进行数据交互。其中&#xff0c;PUT 请求是一种常用的方法&#xff0c;用于向服务器发送更新或修改数据的请求。通过发送 PUT 请求&#xff0c;我们可以更新服务器上的资源状态。 Axios 是一个流行的 JavaScript 库&#xff0…

关于用scanf(“%d“,)时非法字符输入导致的死循环的原因及解决方法

现象描述 题目要求输入一个整数n(0<n<20)&#xff0c;需要考虑非法字符输入的情况。若输入非法字符或者不在合法区间&#xff0c;则重新输入。于是我们很自然的打出了如下代码&#xff1a; int a; while(1){scanf("%d",&a);if(a>0&&a<20) …

NSV60600MZ4T1G 双极型晶体管(BJT)学习总结

双极型晶体管的起源: 双极型晶体管是在1947年发明的&#xff0c;第一个晶体管是将两条具有尖锐端点的金属线与锗衬底(germanium substrate)形成点接触(point contact)&#xff0c;以今天的水准来看&#xff0c;此第一个晶体管虽非常简陋但它却改变了整个电子工业及人类的生活方…

关于一次两段式提交和数据库恢复数据我的一些想法

binlog是服务层的功能&#xff0c;而redolog是innodb引擎的功能&#xff0c;binlog主要用于主从复制&#xff0c;redolog主要用做数据的恢复&#xff0c;我们必须保证binlog和redolog日志数据的一致性。恢复数据时也必须遵守此一致性。 1.如果只写一次redolog会出现什么问题&a…

行测图形推理规律(一)元素组成

题库&#xff1a;粉笔网题库 (fenbi.com) 不知道和测评的行测题库是不是一样的&#xff0c;但是总结的规律应该是一样的。 规律并不唯一&#xff0c;题库的答案也只是参考答案&#xff0c;切勿当杠精&#xff0c;你觉得你的规律更合适就别管。本人所归纳的规律仅代表本人想法…

开源知识库平台Raneto

什么是 Raneto &#xff1f; Raneto 是一个开源知识库平台&#xff0c;它使用静态 Markdown 文件来支持您的知识库。 官方提供了 doc & demo 网站&#xff0c;即是帮助文档&#xff0c;也是个 demo&#xff0c;地址&#xff1a;https://docs.raneto.com 准备 项目使用con…

Android之 Canvas绘制

一 Canvas介绍 1.1 Canvas 是绘制图形的重要类之一&#xff0c;它可以在 View 或 SurfaceView 上绘制各种图形和文本. 1.2 要创建 Canvas&#xff0c;首先需要有一个 View 或 SurfaceView 对象&#xff0c;在 View 或 SurfaceView 的绘制方法中&#xff0c;可以通过 Canvas 的…

Git的一些常用概念与操作方法分享

Git是一个版本控制系统&#xff0c;它可以记录代码的变化历史并允许多个开发者同时对同一代码库进行开发。以下是Git的基本概念和使用方式&#xff1a; 仓库&#xff08;Repository&#xff09;- 保存代码的地方。Git仓库包含了所有的版本历史记录、代码以及其他相关文件。 分…

【元宇宙】临界质量,元宇宙的关键要素

考虑到电气化和移动技术的普及过程&#xff0c;我们可以自信地说&#xff0c;元宇宙不会突然到来。同时&#xff0c;也不会有明确的“元宇宙之前”( beforeMetaverse &#xff09;和“元宇宙之后”( afterMetaverse &#xff09;阶段一它们只是对应着生活发生改变的历史时期。一…

使用ADB命令查询Android设备的安卓版本信息

确保你已经安装了ADB并将其添加到系统的路径中。 连接你的Android设备到计算机&#xff0c;并确保启用了开发者选项和USB调试模式。你可以在设备的设置中找到这些选项。 打开终端&#xff08;命令提示符或终端窗口&#xff09;。 运行以下ADB命令来获取Android设备的安卓版本…

华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南

目录 引出书接上回&#xff0c;部署spring项目&#xff0c;端口访问失败最后排查结果反馈 尝试的几种解决方案【未成功】1.指定tomcat启动ipv4端口2.添加开放端口规则保存规则防火墙相关命令记录 最终成功解决【成功&#xff01;】用firewall成功了问题来了&#xff0c;如果这里…

Linux系统离线安装RabbitMQ

安装rabbitmq 1、下载安装包 首先进入官网进行安装包的下载&#xff0c;在下载时一定要注意erlong版本和rabbitmq-server版本匹配 rabbitmq版本对应关系&#xff1a;传送门 Erlong下载地址:传送门 rabbitmq-server下载地址:传送门 socat 不同版本 centos7:传送门 cent…