对于Promise的理解

news2025/2/13 0:04:59

1.什么是回调地狱

多层异步函数的嵌套叫做回调地狱

代码1:

    setTimeout(() => {
        console.log(`吃饭`);
        setTimeout(() => {
          console.log(`睡觉`);
          setTimeout(() => {
            console.log(`打豆豆`);
          }, 1000);
        }, 2000);
      }, 3000);

代码2:

通过id获取用户名,通过用户名获取邮箱

 总结:

可以看得出来,写出来的代码非常的冗余。

2.什么是Promise

代码:
 

 const p= new Promise((resolve,reject)=>{
      
    })

可以看出Promise是一个构造函数,怎么看出来的呢,通过new关键字看出来的。

3.Promise的三种状态

1.pending   等待的状态

 const p = new Promise((resolve, reject) => {
       
      });
      console.log(p);

2.fulfilled   成功

 const p = new Promise((resolve, reject) => {
        resolve(2)
      });
      console.log(p);

3.rejected  失败

 const p = new Promise((resolve, reject) => {
       reject(3)
      });
      console.log(p);

总结:

状态的控制是有的参数来进行控制的,resolve=>成功的状态,reject=>失败的状态,什么都不传递的话就是pending状态

4.原型链上的方法

图示:

 

then:

  const p = new Promise((resolve, reject) => {
      reject(3)
      });
      p.then(
        (res) => {
          console.log(res, "成功状态的结果");
        },
        (reject) => {
          console.log(reject, "失败状态的结果");
        }
      );
      console.log(p);

同样也是接收两个参数:

一个成功的,一个失败的,根据状态来得到不同的结果。

5.catch方法

能够捕获到rejcet状态下的数据,同时也能捕获到报错。

代码示例:

1.报错:

 const p = new Promise((resolve, reject) => {
        asdasd;
      });
      p.catch((res) => {
        console.log(res, `catch捕获到的报错`);
      });

 

const p = new Promise((resolve, reject) => {
        throw Error(`此处异常`);
      });
      p.catch(res=>{
        console.log(res,`catch捕获到的报错`);
      });

2.reject的参数:

 const p = new Promise((resolve, reject) => {
        reject(2)
      });
      p.catch(res=>{
        console.log(res,`catch捕获到的报错`);
      });

6.链式调用

返回的是一个peading状态下的Promise

  const p = new Promise((resolve, reject) => {
        resolve(2);
      });
      const result = p.then((res) => {
        console.log(res, "获取的结果");
      });
      console.log(result, "返回一个peadind状态的promise");

怎么改变这个状态呢

使用return可以将result的状态改成fufiled

 const p = new Promise((resolve, reject) => {
        resolve(2);
      });
      const result = p.then((res) => {
        return 2
      });
      console.log(result);
      result.then(res=>{
        console.log(res);
      })

 

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

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

相关文章

如何自动识别快递单号和批量查询的方法

最近有很多朋友问我,有没有办法批量查询快递单号,查询该快递单号的所有物流发货信息?今天小编就来分享一个实用的查询技巧,教大家轻松查询多个快递单号,还可以一键保存查询数据,一起来看看吧。 首先今天我们…

PoseNet深度网络进行6D位姿估计的训练,python3实现

0.相关github网址 原版github代码-caffe实现tensorflow实现,相关版本较低,python2,本文根据此代码迁移到python3上面。pytorch实现,但将骨干模型从goglenet改成了resnet,实验效果得到提升,但没公布预训练权…

快递单号一键批量查询的具体操作方法和步骤

最近做电商的朋友对一个话题很感兴趣:如何批量查询快递单号?今天,小编给你安利一款软件:固乔快递查询助手,支持大量快递单号的批量查询。下面我们来看看批量查询的具体操作方法。 小伙伴们需要先在“固乔科技”的官网上…

session与cookie的来源与区别

目录 1.什么是HTTP? 2.cookie 3.session 4.cookie和session的区别 如果你对于session 和cookie 只有一点模糊理解,那么此文章能帮你更深入理解session和cookie ,依旧和上篇文章一样,我们采用问题的方式来一步步探索&#xff0…

第七章 测试

文章目录 第七章 测试7.1 编码7.1.1 选择程序设计语言1. 计算机程序设计语言基本上可以分为汇编语言和高级语言2. 从应用特点看,高级语言可分为基础语言、结构化语言、专用语言 7.1.2 编码风格 7.2 软件测试基础7.2.1 软件测试的目标7.2.2 软件测试准则7.2.3 测试方…

JVM基础面试题及原理讲解

基本问题 介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 Strin…

Flutter Widget 生命周期 key探究

Widget 在Flutter中,一切皆是Widget(组件),Widget的功能是“描述一个UI元素的配置数据”,它就是说,Widget其实并不是表示最终绘制在设备屏幕上的显示元素,它只是描述显示元素的一个配置数据。 …

分库分表 21 招

(一)好好的系统,为什么要分库分表? 咱们先介绍下在分库分表架构实施过程中,会接触到的一些通用概念,了解这些概念能够帮助理解市面上其他的分库分表工具,尽管它们的实现方法可能存在差异&#…

自动化测试框架seldom

创建项目 | seldom文档 这个框架还是不错的,一直在优化,测试框架里的功能这里都有了。 seldom继承unittest单元测试框架,可以用来做UI和接口自动化项目。 安装 pip install seldom 创建项目 > seldom -P mypro 创建测试用例 # tes…

第8章 维护

文章目录 第8章 维护一、软件交付使用的工作二、软件交付使用的方式1) 直接方式2) 并行方式3) 逐步方式 8.1 软件维护的定义1、软件维护的定义2、软件维护的原因3、软件维护的类型1、改正性维护2、适应性维护3、完善性维护4、预防性维护 8.2 软件维护的特点8.2.1结构化维护和非…

12.异常-Exception|Java学习笔记

文章目录 异常介绍异常体系图一览运行时异常编译异常异常处理异常处理的方式try-catch 异常处理throws 异常处理注意事项和使用细节 自定义异常自定义异常的步骤 throw和throws的区别 异常介绍 基本概念:Java语言中,将程序执行中发生的不正常情况称为“…

【TCP/IP】多进程服务器的实现(进阶) - 多进程服务器模型及代码实现

经过前面的铺垫,我们已经具备实现并发服务器的基础了,接下来让我们尝试将之前的单任务回声服务器改装成多任务并发模式吧! 多任务回声服务器模型 在编写代码前,先让我们大致将多任务(回声)服务器的模型抽象…

mac下部署和访问 Kubernetes 仪表板(Dashboard)

简介 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kub…

技术分享——隐私计算简介

随着数据规模的不断扩大和网络技术的快速发展,数据安全和隐私保护成为了热门的话题。隐私计算作为一种新兴的数据安全和隐私保护技术,为数据安全和隐私泄露问题提供了新的思路和方法。 2020年10月19日,Gartner发布2021年前沿战略科技趋势&am…

VTK源码编译安装记录与教程(VS2019+QT5.15.2+PCL1.12.1+VTK9.1.0配置,超详细)

因为PCL库(傻瓜式安装)中自动安装的VTK库并不完整,不支持QT环境的UI界面开发,于是,想用QT在VS2019上开发图形界面程序,需要单独自己通过VTK源码编译安装,再进行配置。本人安装时开发环境已经装好…

2023拒绝行业内卷!八年软件测试月薪30K*16薪行业心得 想入行必看

目前工作做软件测试工作8年,属于高级测试员那个级别吧!现在看到各行各业的人都在转行学习软件测试,想给大家一些学习建议和忠告。 很多粉丝都跟我说今年行情很差,找不到工资,真的找不到工作了吗? 我们常在网…

simhash原理以及用python3实现simhash算法详解(附python3源码)

1. 为什么需要Simhash? 传统相似度算法:文本相似度的计算,一般使用向量空间模型(VSM),先对文本分词,提取特征,根据特征建立文本向量,把文本之间相似度的计算转化为特征向量距离的计算,如欧式距离、余弦夹角等。 缺点:大数据情况下复杂度会很高。 Simhash应用场景:…

Graph Learning笔记 - 长尾分布问题

Graph Learning笔记 - 长尾分布问题 分享四篇论文入门图神经网络时的学习笔记。 SL-DSGCN 论文:Investigating and Mitigating Degree-Related Biases in Graph Convolutional Networks 来源:2020CIKM 概要 GCN在图的半监督学习上能取得良好表现&a…

lora,固定模特+固定衣服,怎么实现?

在电商行业,经常会有一个需求,就是把固定的衣服让模型穿上,然后拍很多的图片,放在商品主图、详情页、买家秀...... 人工智能发展到现在,最近aigc也挺热门的,有没有办法用“人工智能”算法就实现这个功能&a…

逆向汇编反汇编——函数分析

add esp,8就是把esp调整到函数调用之前的状态,用以平衡堆栈 默认采用的是cdcall:外平栈 stdcall:内平栈 什么是堆栈平衡? 》原来的堆栈是什么样的,函数调用之后堆栈还是什么样的(即,esp和ebp的值保持不变)&#xf…