Promise-用法

news2024/11/26 0:23:07

目录

1.处理异步的几种方案

2.理解

3.promise状态:初始化

4.执行异步任务

5.执行异步任务成功

6.执行异步任务失败

7.执行异步任务成功-返回

8.执行异步任务失败-返回


1.处理异步的几种方案

  1. 纯粹callback,会剥夺函数return的能力
  2. promise,多个异步等待合并,不需要层层传递callback,但是没有脱离回调函数的本质。
  3. async await ES2017,最佳异步处理方法

2.理解

1.Promise对象代表了未来某个将要发生的事件,通常是一个异步操作

2.有了promise对象,可以将异步操作以同步的流程表达出来,避免了层层嵌套的回调函数(俗称回调地狱)

3.ES6的Promise是一个构造函数,用来生成promise实例

4.通过执行异步操作的结果取修改promise实例的状态,调用promise实例对象里面的then的成功或者失败的回调

3.promise状态:初始化

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
})
console.log("223")
</script>
</body>
</html>

4.执行异步任务

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
    },2000)
})
console.log("223")
</script>
</body>
</html>

5.执行异步任务成功

resolve(); 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        resolve(); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 reject
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then(()=>{
            console.log("成功的回调")
            }
            ,()=>{
            console.log("失败的回调")
            })

</script>
</body>
</html>

6.执行异步任务失败

reject();

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        //resolve(); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 rejected :失败的状态
        reject();
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then(()=>{
            console.log("成功的回调")
            }
            ,()=>{
            console.log("失败的回调")
            })

</script>
</body>
</html>

7.执行异步任务成功-返回

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        let res = {
            msg:"异步任务执行成功",
            code:200
        }
        resolve(res); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 rejected :失败的状态
        reject();
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then((res)=>{
            console.log("成功的回调",res)
            }
            ,()=>{
            console.log("失败的回调")
            })

</script>
</body>
</html>

8.执行异步任务失败-返回

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>promise</title>
</head>
<body>

<script type="text/javascript">
let promise = new Promise((resolve,reject)=>{
    //初始化promise状态:pending:初始化
    console.log("123")
    //执行异步操作,通常是发送ajax请求,开启定时器
    setTimeout(()=>{
        console.log("333")
        //根据异步任务的返回结果修改promise的状态
        //异步任务执行成功
        // let res = {
        //     msg:"异步任务执行成功",
        //     code:200
        // }
        // resolve(res); // 自动修改promise的状态为 fullfilled:成功状态
        //异步任务执行失败 rejected :失败的状态
        let res = {
            msg:"异步任务执行失败",
            code:500
        }
        reject(res);
    },2000)
})
console.log("223")
// 需要调用resolve()或者reject(),才会走到then
promise.then((res)=>{
            console.log("成功的回调",res)
            }
            ,(res)=>{
            console.log("失败的回调",res)
            })

</script>
</body>
</html>

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

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

相关文章

浅析kubernates的pv和pvc

文章目录 概要名词解释什么是Pod什么是StorgeClass静态PV和动态PVPV和PVC的生命周期 PVC &#xff0c; PV和 StorageClass的关系小结 概要 最近&#xff0c;在看许多Kubenates的相关文章的时候&#xff0c;了解到了一个概念&#xff0c;是我之前不清楚的。–PV&PVC 。那么今…

Java010——Java八大基本数据类型的进一步学习

前言&#xff1a;前面文章Java009——Java数据类型&变量的简单认识中我们学习了Java数据类型&变量&#xff0c;也简单介绍了Java八大基本数据类型。下面我们继续学习Java八大基本数据类型 回顾&#xff1a;Java八大基本数据类型 大类 类型名称 关键字 占用内…

理性讨论,4年经验,面试要20K很高吗?....

普通二本&#xff0c;4年多测试工作经验&#xff0c;现在依然在测试岗位&#xff0c;只是时间长了和一些个人原因有跳槽的想法&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;本来信心满满的&#xff0c;像这样优秀的人找份高薪…

CAN304 计算机安全

本笔记来自基友 加特-林 Lec1: Computer security的概念&#xff0c;一些术语&#xff0c;攻击类型 CIA Lec2&#xff1a;对称加密&#xff0c;Shift cipher&#xff0c;Vigenere&#xff0c;AES&#xff0c;块加密 私钥加密的别称为对称加密 比如shift cipher&#xff…

腾讯、阿里入选首批“双柜台证券”,港股市场迎盛夏升温?

6月5日&#xff0c;香港交易所发布公告&#xff0c;将于6月19日在香港证券市场推出“港币&#xff0d;人民币双柜台模式”&#xff0c;当日确定有21只证券指定为双柜台证券。同时&#xff0c;港交所还表示&#xff0c;在双柜台模式推出前&#xff0c;更多证券或会被接纳并加入双…

Allegro16.6详细教程(三)

確定Pad的層面 (1)用Single layer mode開關來控制pad type 勾選Single layer mode,則pad為單面孔,比如SMD 不勾選Single layer mode,則pad為通孔,比如:via (2)用滑鼠左鍵點選BEGIN LAYER彈出下面3個欄位 Regular, Thermal Relief, Anti Pad;Regular用於正片,Thermal R…

Nginx + Tomcat 反向代理,负载均衡,动态分离

这里写目录标题 一. Nginx的引入背景公司产品出现瓶颈&#xff1f; 二 nginx 和 Tomcat 的关系三. 什么是Nginx &#xff1f;&#xff08;1&#xff09;Nginx 是什么&#xff1f;(2) Nginx 特点&#xff1a; 四. Nginx作用&#xff1f;1. 反向代理&#xff1a;2. 负载均衡3. 动…

TURTLEBOT3 Burger Waffle Pi 对比

TurtleBot3简介 TurtleBot3是TurtleBot系列中的第三代产品&#xff0c;它在二代的基础之上做了一些改进&#xff0c;并开发了一些新功能&#xff0c;以补充其前身缺乏的功能和满足用户的需求。 TurtleBot3采用机器人智能驱动器Dynamixel驱动&#xff0c;是一款小型的、可编程…

运维小白必学篇之基础篇第十八集:DNS和DHCP中继实验作业

DNS和DHCP中继实验作业 目录 DNS和DHCP中继实验作业 题1&#xff1a;实现DNS服务 服务器&#xff1a; 客户端&#xff1a; 题2&#xff1a;实现DHCP中继服务 服务端配置如下&#xff1a; 客户端配置&#xff1a; 服务端配置&#xff1a;(vmware11) 中继服务器端配置&…

能听懂语音的ChatGPT来了:10小时录音扔进去,想问什么问什么

类 ChatGPT 模型的输入框里可以粘贴语音文档了。 大型语言模型&#xff08;LLM&#xff09;正在改变每个行业的用户期望。然而&#xff0c;建立以人类语音为中心的生成式人工智能产品仍然很困难&#xff0c;因为音频文件对大型语言模型构成了挑战。 将 LLM 应用于音频文件的一…

SpringBoot入门程序以及启动方式 - 项目中切换服务器依赖

文章目录 SpringBootSpringBoot入门程序SpringBoot快速启动SpringBoot基本介绍SpringBoot切换服务器 SpringBoot SpringBoot入门程序 SpringBoot入门程序步骤如下: 创建新模块&#xff0c;选择Spring初始化&#xff0c;并配置模块相关基础信息 选择当前模块需要使用的技术集 …

你真的会写用例吗?自动化测试用例如何编写?看着资深测试的总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

Rocky9配置固定IP

vim /etc/NetworkManager/system-connections/enp4s0.nmconnection[ipv4] methodmanual # 子网掩码为 255.255.254.0 address1192.168.1.207/23,192.168.1.1 # 如果子网掩码为 255.255.255.0 则使用下面配置 # address1192.168.1.207/24,192.168.1.1 dns192.168.1.200;45.116.2…

Springcloud--异步通信RabbitMq

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…

全网对BGP团体属性讲的最透彻的一篇,附华为、思科、瞻博网络三厂商配置!

你好&#xff0c;这里是网络技术联盟站。 Border Gateway Protocol&#xff08;边界网关协议&#xff0c;简称BGP&#xff09;是一种广泛用于互联网的路由选择协议。BGP的设计目标是实现自治系统&#xff08;AS&#xff09;之间的路由选择和交换&#xff0c;它决定了网络中数据…

性能测试loadrunner

目录 基本概念 性能工具jemeter代码调试 loadrunner实战代码笔记 使用Loadrunner的步骤 性能指标分析结果 基本概念 一、什么是性能&#xff1a; 性能&#xff1a;是用来描述产品除功能外的所具有的速度&#xff0c;效率和能力的综合能力评价。 二、什么是性能测试&…

【马蹄集】第十四周作业

第十四周作业 目录 MT2134 泡泡MT2135 调整队伍MT2141 快排变形MT2142 逆序MT2143 线段树 MT2134 泡泡 难度&#xff1a;黄金    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目描述 小码哥小时候喜欢吹泡泡&#xff0c;有一次他吹出了 n n n 个一样小的泡泡&…

工业无监督缺陷检测,提升缺陷检测能力,解决缺陷样品少、不平衡等问题

1. 简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业异常检测主要面临的挑战: 难以获取大量异常样本正常样本和异常样本差异较小异常的类型不能预先得知这些挑战使得…

Linux Tomcat服务 【Tomcat-JVM-系统内核】 优化

---------------------Tomcat 优化------------------------- Tomcat默认安装下的缺省配置并不适合生产环境&#xff0c;它可能会频繁出现假死现象需要重启&#xff0c;只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面&#xff0c;分别为操作系统优化&…

智能电表价格比机械电表价格高那么多?为什么?

智能电表是一种电子式电表&#xff0c;采用微处理器进行数据处理和控制&#xff0c;具有远程监控、数据传输、电量显示等多种功能。而机械电表则是传统的机械式电表&#xff0c;采用旋转式或弹簧式机械结构进行计量。 智能电表的价格比机械电表高&#xff0c;这主要是由于以下几…