【前端学习】—Promise基本知识(十六)

news2024/11/20 13:26:44

【前端学习】—Promise基本知识(十六)

一、class和function的区别

  • 相同点:都可以用作构造函数
  • 不同点:class不可以使用call apply bind的方式来改变它的执行上下文

二、Promise

在这里插入图片描述
定义:Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件更合理和更强大。它是由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象

三、代码演示

<script>

        //3个状态  pending fulfilled rejected
      new Promise(function (resolve, reject) {
        let fullName = "cai";
        if (fullName === "cai") {
          resolve(1);
        } else {
          reject(2);
        }
      }).then(
        function (value) {
          console.log(`resolve-value`, value);//resolve-value 1
        },
        function (value) {
          console.log(`reject-value`, value);
        }
      );
    </script>
<script>
      //Promise.prototype.then
      //可以支持链式调用
      //then接收的两个函数都是参数
      //第一个函数是Promise  状态变成fulfilled时候回调函数
      //第二个函数也是Promise 状态变成rejected的时候调用
      //返回值也是Promise(新的)

      new Promise(function (resolve, reject) {
        let fullName = "lily";
        if (fullName === "lily") {
          resolve(1);
        } else {
          reject(2);
        }
      })
        .then((value) => {
          console.log(`fulfilled value`, value);
          return value + 1;
        })
        .then(
          (fulfilledValue) => {
            console.log(`fulfilled value`, fulfilledValue);
          },
          (rejectedValue) => {
            console.log(`rejectedValue`, rejectedValue);
          }
        );
    </script>
//Promise.prototype.catch()捕获promise错误
      new Promise(function (resolve, reject) {
        let name = "ll";
        if (name === "llu") {
          resolve(1);
        } else {
          reject("promise error");
        }
      })
        .then((value) => {
          console.log(value);
        })
        .catch((error) => {
          console.log(error); //promise error
        });
 //Promise.prototype.finally()用于指定不管promise对象最后状态如何 都会执行的操作


      new Promise(function (resolve, reject) {
        console.log(`loading start……`)
        let name = "ll";
        if (name === "llu") {
          resolve(1);
        } else {
          reject("promise error");
        }
      })
        .then((value) => {
          console.log(value);
        })
        .catch((error) => {
          console.log(error); //promise error
        }).finally(()=>{
            console.log(`loading end……`)
        });
 // Promise.all
    //用于将多个Promise实例包装成一个新的Promise实例
      const promiseArray=[1,2,3,4,5].map((item)=>{
        return new Promise((resolve)=>{
            resolve(item);
        })
      })

      Promise.all(promiseArray).then(res=>{
        console.log(`res`,res);
      })
  // Promise.race方法是将多个promise实例,包装成一个新的Promise实例
      //Promise.race 继发(挨个发送)
      //Promise.all并发(多个一起发送)
       
        const promiseArray=[1,2,3,4,5].map((item)=>{
        return new Promise((resolve)=>{
            resolve(item);
        })
      })
      Promise.race(promiseArray).then(res=>{
        console.log(`res`,res);//res 1
      })
// Promise.resolve将现有对象 转换成Promise对象
Promise.resolve(1).then(res=>{
    console.log(res)//1
})
// Promise.reject 返回一个Promise实例 ——>rejected
Promise.reject('promise error').then(null,rejected=>{
    console.log(`rejected`,rejected)
})

四、ES6扩展运算符…实现原理

在这里插入图片描述

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

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

相关文章

【OpenCV实现图片以及视频的读取、显示、保存以及绘图函数】

文章目录 图片视频从文件读取视频保存一个视频绘图函数 图片 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的图像处理工具和算法&#xff0c;使得开发者能够轻松实现各种图像处理任务。…

办鹿uniapp小程序(一)

一、项目初始化 1. appid 》 公司给你 wxc82730a0fc15e28a 2. 开发者身份 》 公司给你添加 小程序官网&#xff1a;小程序 管理》成员管理》项目成员 1、 uniapp ui组件 &#xff08;uView&#xff09; 如果采用npm安装方式在 小程序端不生效 1.1 采用插件的形式安装&#xf…

pycharm操作git、前后端项目上传到gitee

pycharm操作git 之前用命令做的所有操作&#xff0c;使用pychrm点点就可以完成 克隆代码 上方工具栏Git ⇢ \dashrightarrow ⇢ Clone ⇢ \dashrightarrow ⇢ 填写地址&#xff08;http、ssh&#xff09; 提交到暂存区&#xff0c;提交到版本库&#xff0c;推送到远程 直接…

Nmap端口服务 之 CentOS7 关于启动Apache(httpd)服务、telnet服务、smtp服务、ftp服务、sftp服务

Nmap端口服务 之 CentOS7 关于启动Apache(httpd)服务、telnet服务、smtp服务、ftp服务、sftp服务 一. CentOS7 安装配置SFTP服务器详解一、SFTP简介二、关闭防火墙三、安装SSH服务在CentOS7中,sftp只是ssh的一部分,所以采用yum来安装ssh服务即可1. 查看是否已经安装了ssh2.…

promise返回值多层嵌套

实际上打印的是promise的res不是api接口返回值 因为用apifox测试开发服务器的代理接口&#xff0c;和不加代理测试返回值相同&#xff1a; http://localhost:3030是vue开发代理。 "D:\code\jeecg\vue\job-app-master\manifest.json" "proxy" : {"/ap…

嵌入式实习难找怎么办?

今日话题&#xff0c;嵌入式实习难找怎么办&#xff1f;个人建议如果找不到实习机会&#xff0c;可以回归学习嵌入式所需的知识&#xff0c;积累项目经验或者回顾之前参与过的项目&#xff0c;将它们整理复盘。如果还有时间&#xff0c;可以再尝试找实习&#xff0c;如果找不到…

【CANoe】Canoe的 I/O功能-以VN1640A为例

文章目录 一、配置CH5 IO通道二、Trace窗口勾选系统变量三、实例1、数字量输入2、模拟量输入设置电压值的读取周期为100ms在Trace窗口中显示当前电压 3、控制电源是否输出电压到外部电路3.1CAPL脚本编写3.2实操3.3补充&#xff1a;数字输出功能DOUT(Output OD)的使用 四、CANoe…

【算法练习Day23】 复原 IP 地址子集子集 II

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 复原 IP 地址子集子集 II总…

Unity之ShaderGraph如何模拟水波实现顶点波动

前言 今天我们实现类似水波纹的顶点波动效果 如下所示&#xff1a; 主要节点 Tilling And Offset&#xff1a;分别通过输入Tiling和Offset平铺和偏移输入UV的值。这通常用于细节贴图和随时间滚动的纹理。 Gradient Noise&#xff1a;根据输入UV生成梯度或Perlin噪声。生成…

骰子涂色(Cube painting, UVa 253)rust解法

输入两个骰子&#xff0c;判断二者是否等价。每个骰子用6个字母表示&#xff0c;如图4-7所示。 例如rbgggr和rggbgr分别表示如图4-8所示的两个骰子。二者是等价的&#xff0c;因为图4-8&#xff08;a&#xff09;所示的骰子沿着竖直轴旋转90之后就可以得到图4-8&#xff08;b&a…

民宿管理系统应该怎么选择?民宿系统有哪些作用?

开民宿的朋友都知道&#xff0c;虽然民宿少则5-6间房&#xff0c;多则100-200间房&#xff0c;体量看起来不大&#xff0c;但是管理起来却需要费很多精力。房态最主要的有5种&#xff1a;在住、预定、待打扫、待入住、空房&#xff0c;假如是5间房&#xff0c;那就是25种房态&a…

Unity3D 拖拽赋值组件与通过Find赋值组件的优点与缺点详解

Unity3D是一款流行的游戏开发引擎&#xff0c;提供了丰富的功能和工具&#xff0c;使开发人员能够轻松创建高质量的游戏。在Unity3D中&#xff0c;我们经常需要通过拖拽赋值组件或通过Find赋值组件来实现不同对象之间的交互。本文将详细介绍这两种方法的优点和缺点&#xff0c;…

Systemverilog断言介绍(一)

3 Introduction to systemverilog assertions 为了利用形式验证&#xff08;FV&#xff09;的力量来证明设计的正确性&#xff0c;首先必须有一种表达您的设计是否正确的方式。最流行的方法是通过property来实现&#xff0c;使用SystemVerilog Assertions&#xff08;SVA&#…

Halcon 3D相关案例分享

文章目录 一、预处理1、平滑滤波算子说明平滑效果图 二、检测1、外观缺陷检测算子说明缺陷检测效果图 2、点云边界框算子说明边界框效果图 3、平面度检测算子说明平面度效果图 三、量测1、高度测量算子说明测量效果图 2、体积测量算子说明测量效果图 四、配准1、根据模型配准算…

【算法|动态规划No.23】leetcode376. 摆动序列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

doris operator部署Doris集群教程

doris operator部署Doris集群教程 前言部署流程 前言 kubernetes Operator是遵循kubernetes API和控制器模式&#xff0c;它主要用来封装运维业务逻辑的软件。它利用kubernetes的自定义资源定义&#xff08;CRD&#xff09;扩展API&#xff0c;并通过控制器模式监听资源对象&a…

CVPR 2018 基于累积注意力的视觉定位 Visual Grounding via Accumulated Attention 详解

Abstract&#xff1a; VG面临的主要挑战有3个&#xff1a;1 )查询的主要焦点是什么&#xff1b;2 )如何理解图像&#xff1b;3 )如何定位物体。 在本文中&#xff0c;我们将这些挑战形式化为三个注意力问题&#xff0c;并提出了一个累积注意力( A-ATT )机制来共同推理其中的挑战…

找不到msvcr120.dll无法执行代码?教你6种方法快速解决问题

在现代的计算机编程中&#xff0c;我们经常会遇到各种各样的问题。其中&#xff0c;“由于找不到msvcr120.dll无法执行代码”的问题是许多开发者都会遇到的一个常见难题。这个问题通常发生在我们试图运行使用Visual Studio 2013编译的程序时&#xff0c;因为msvcr120.dll是Micr…

【QT】QTreeWidget

新建项目 第一步&#xff1a;设置头标签 第二步&#xff1a;设置item 第三步&#xff1a;创建子item&#xff0c;挂载在顶层item下 完整代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::W…

Unity Animation--动画剪辑(动画游戏对象)

保存新的动画剪辑后&#xff0c;就可以开始添加关键帧了。 可以使用两种不同的方法为GameObject设置动画。 Unity“动画”窗口&#xff1a;“记录模式”和“预览模式”。 记录模式下的动画窗口 在记录模式下&#xff0c;当您移动&#xff0c;旋转或以其他方式修改动画GameOb…