当前位置: 首页 > news >正文

ES6中的Promise

Promise 是一种异步编程解决方案,Promise是一个容器,保存着将来才会执行的代码;从语法角度来说Promise是一个对象,可以用来获取异步操作的消息。异步操作,同步解决,避免了层层嵌套的回调函数,可以链式调用降低了操作难度

Promise构造函数接收一个函数作为参数,也就是回调函数;该函数的两个参数分别是resolve和reject。resolve作为成功的回调函数,reject作为失败的回调函数。Promise对象代表一个异步操作有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。最后返回resolved(已定型)结果。

 let p1=new Promise((resolve,reject)=>{if(3>2){resolve('success')}else{reject('error')}})p1.then((res)=>{console.log(res,'成功回调')}).catch((error)=>{console.log(error,'失败回调')}).finally(()=>{console.log('最终执行')})p1.then((res)=>{console.log(res,'成功')},(err)=>{console.log(res,'失败')});

静态方法 只能由构造函数本身去调用

定义在Promise中的方法,通过Promise可以直接调用

Promise.all([p1,p2])

参数:数组,数组中的元素为Promise实例

返回值:Promise实例,当p1,p2状态都为fulfilled时候,该实例的状态才为fulfilled,此时p1,p2的返回值组成一个数组,传递给该实例的回调函数;只要p1,p2的返回值有一个变为rejected,该实例状态为rejected;

Promise.race([p1,p2]) 赛跑返回先请求成功的实例

参数:数组,数组中的元素为Promise实例 返回值:Promise实例,当p1,p2之中有一个实例率先改变状态,该实例的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给该实例的回调函数。

Promise.any([p1,p2]) 参数:数组,数组中的元素为Promise实例 返回值:Promise实例,只要p1,p2状态有一个变为fulfilled,该实例的状态为fulfilled;p1,p2状态都变为rejected,该实例状态才为rejected

function promise(url) {return new Promise((resolve, reject) => {let xhr = new XMLHttpRequest();xhr.open('get', url);xhr.send();xhr.onreadystatechange = function () {if (xhr.readyState === 4) {if (xhr.status === 200) {resolve(xhr.responseText)} else {reject(xhr.responseText)}}}})}let p1=getPromise('http://121.199.0.35:8888/index/article/findCategoryArticles');let p2=getPromise('http://121.199.0.35:8888/index/carousel/findAll');let p=Promise.any([p1,p2]);p.then((res)=>{console.log(res)}).catch((err)=>{console.log(err)})
setTimeout(function () {console.log('1');
})
new Promise(function (resolve) {console.log('2');resolve();
}).then(function () {console.log('3');
})
console.log('4');async function async1() {console.log(1);const result = await async2();console.log(3);
}
async function async2() {console.log(2);
}
Promise.resolve().then(() => {console.log(4);
});
setTimeout(() => {console.log(5);
});
async1();
console.log(6);

相关文章:

ES6中的Promise

Promise 是一种异步编程解决方案,Promise是一个容器,保存着将来才会执行的代码;从语法角度来说Promise是一个对象,可以用来获取异步操作的消息。异步操作,同步解决,避免了层层嵌套的回调函数,可…...

载入了名字空间‘htmltools’ 0.5.6,但需要的是>= 0.5.7解决方案

解决方案:删除之前的旧版本安装包,安装新的包 1.卸载之前的安装包 2.关闭R,重新打开 3. # install.packages("htmltools") library(htmltools)...

Cisco 思科路由交换网络设备 安全基线 安全加固操作

目录 账号管理、认证授权 本机认证和授权ELK-Cisco-01-01-01 设置特权口令 ELK-Cisco-01-02-01 ELK-Cisco-01-02-02 ​​​​​​​登录要求 ELK-Cisco-01-03-01 ​​​​​​​ELK-Cisco-01-03-02 ELK-Cisco-01-03-03 日志配置 ELK-Cisco-02-01-01 通信协议 ELK-Cisco-…...

WPF仿网易云搭建笔记(0):项目搭建

文章目录 前言项目地址项目Nuget包搭建项目初始化项目架构App.xaml引入MateralDesign资源包 项目初步分析将标题栏去掉DockPanel初步布局 资源字典举例 结尾 前言 最近在找工作,发现没有任何的WPF可以拿的出手的工作经验,打算仿照网易云搭建一个WPF版本…...

Python爬虫利器:BeautifulSoup库详解

BeautifulSoup是Python中最流行的HTML解析库之一,它可以方便地从HTML文档中提取数据,并且支持多种解析器,可以适应不同的HTML文档格式。本文将介绍BeautifulSoup库的作用、用途和基本用法,帮助读者了解如何使用BeautifulSoup进行H…...

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 N…...

安卓adb【备忘录】

adb常用命令 第三方包 pm list package -3查看所有包【外部直接进入】 adb shell pm list package退出 exit安装 adb install [路径]卸载 adb uninstall [包名]下载手机中的文件到电脑 adb pull /etc/hosts D:\tmp\电脑上传文件至手机【需要root】 adb push D:\tmp\hos…...

Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件

code review! 文章目录 1.Linux笔记之删除指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件2.将指定目录下除最新修改的以 .pack 为扩展名的文件之外的所有文件移动到另一个目录3.xargs:用于从标准输入中读取数据,并将其作为参数传递给指定…...

什么是呼叫中心的语音通道?呼叫中心语音线路有几种?

什么是呼叫中心的语音通道? 呼叫中心的语音通道是指在呼叫中心中使用的语音信号传输通道,它是呼叫中心中至关重要的一部分,负责将客户的语音信息传递给客服代表,以及将客服代表的语音信息传递给客户。在呼叫中心的运营中&#xf…...

3D点云:平面模型上提取凸(凹)多边形方法

目录 一、实现原理 二、实现代码 三、运行结果 一、实现原理 首先要在点云中提取出潜在平面,对原始点云数据进行滤波,根据提取出的平面模型系数从滤波后的点云进行投影,然后根据投影后的点云计算其对应的二维凹(凸)多边形。 二、实现代码 #in...

论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP

论文笔记--A Fine-grained Interpretability Evaluation Benchmark for Neural NLP 1. 文章简介2. 文章概括3 文章重点技术3.1 数据收集3.2 数据扰动3.3 迭代标注和检查根因3.4 度量3.4.1 Token F1-score3.4.2 MAP(Mean Average Precision) 4. 文章亮点5. 原文传送门 1. 文章简…...

NFC和蓝牙在物联网中有什么意义?如何选择?

#NFC物联网# #蓝牙物联网# 在物联网中,NFC和蓝牙有什么意义? NFC在物联网中代表近场通信技术。它是一种短距离、高频的无线通信技术,可以在近距离内实现设备间的数据传输和识别。NFC技术主要用于移动支付、电子票务、门禁、移动身份识别、防…...

代码随想录二刷 |二叉树 | 二叉树的最小深度

代码随想录二刷 |二叉树 | 二叉树的最小深度 题目描述解题思路代码实现 题目描述 111.二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子…...

云上守沪 | 云轴科技ZStack成功实践精选(上海)

为打造国际数字之都,上海发布数字经济发展“十四五”规划,围绕数字新产业、数据新要素、数字新基建、智能新终端等重点领域,加强数据、技术、企业、空间载体等关键要素协同联动,加快进行数字经济发展布局;加快基础软件…...

2023 IoTDB 用户大会成功举办,深入洞察工业互联网数据价值

2023 年 12 月 3 日,中国通信学会作为指导单位,Apache IoTDB Community、清华大学软件学院、中国通信学会开源技术委员会联合主办,“科创中国”开源产业科技服务团和天谋科技(北京)有限公司承办的 2023 IoTDB 用户大会…...

cache教程 3.HTTP服务器

上一节我们实现了单机版的缓存服务,但是我们的目标是分布式缓存。那么,我们就需要把缓存服务部署到多态机器节点上,对外提供访问接口。客户端就可以通过这些接口去实现缓存的增删改查。 分布式缓存需要实现节点间通信,而通信方法…...

redis应用-分布式锁

目录 什么是分布式锁 分布式锁的基本实现 引入过期时间 引入校验id 引入lua 引入看门狗 引入redlock算法 什么是分布式锁 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题. 而…...

51单片机程序

利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器O以500MS速度进行流水灯从土至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后&#xff…...

Android 分享小结

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、微信 分享 三、 QQ 、QQ空间(Qz…...

Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置

一、依赖安装 sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk pip2 install pandas jinja2 pyserial cerberus pyulog0.7.0 n…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

日常一水C

多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下&#xf…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...

Python的__call__ 方法

在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...

【Java多线程从青铜到王者】单例设计模式(八)

wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒&#xf…...