promise,async →await,then→catch,try→catch 使用简介

提示:promise,async →await,then→catch,try→catch 使用简介

文章目录

  • 前言
  • 一、Promise
  • 二、promise then/catch
  • 三、promise async/await try/catch
  • 总结


前言

需求:promise,async →await,then→catch,try→catch 使用简介

一、Promise

w3c-school-promise介绍
Promise 是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务。

//新建一个 Promise 对象
new Promise(function (resolve, reject) {// 需要执行的任务代码块//resolve promise里代码全部执行成功时调用//reject  promise里代码出现异常时调用
});

示例:

<!DOCTYPE html>
<html lang="en">
<body><div style="text-align: center;">promise</div><script>let num  = 3;new Promise((resolve,reject)=>{setTimeout(()=>{if(num>5){resolve({msg:`2秒后 num=${num}大于5  执行的resolve`})}else{reject({msg:`2秒后 num=${num}小于等于5  执行的reject`});}},1000);});</script>
</body>
</html>

因为没有捕获异常,所以浏览器把异常抛出来了
在这里插入图片描述

二、promise then/catch

then:执行resolve后,进入then
catch :执行reject后,进入catch

1、执行resolve后,进入then

<!DOCTYPE html>
<html lang="en">
<body><div style="text-align: center;">promise</div><div style="text-align: center;">then catch</div><script>let num  = 6;new Promise((resolve,reject)=>{setTimeout(()=>{if(num>5){resolve({msg:`2秒后 num=${num}大于5  执行的resolve`})}else{reject({msg:`2秒后 num=${num}小于等于5  执行的reject`});}},1000);}).then(data=>{console.log(data,'then success')}).catch(err=>{console.log(err,'catch err')})</script>
</body>
</html>

在这里插入图片描述

2、执行reject后,进入catch

<!DOCTYPE html>
<html lang="en">
<body><div style="text-align: center;">promise</div><div style="text-align: center;">then catch</div><script>let num  = 3;new Promise((resolve,reject)=>{setTimeout(()=>{if(num>5){resolve({msg:`2秒后 num=${num}大于5  执行的resolve`})}else{reject({msg:`2秒后 num=${num}小于等于5  执行的reject`});}},1000);}).then(data=>{console.log(data,'then success')}).catch(err=>{console.log(err,'catch err')})</script>
</body>
</html>

在这里插入图片描述

三、promise async/await try/catch

try:执行resolve后,进入try
catch :执行reject后,进入catch

1、try接收resolve

//只有async函数的内部,才可以使用await函数    
//await 把函数返回的PromiseObject转化成普通object
<!DOCTYPE html>
<html lang="en">
<body><div style="text-align: center;">promise</div><div style="text-align: center;">try catch</div><script>function testPromise(num){return new Promise((resolve,reject)=>{setTimeout(()=>{if(num>5){resolve({msg:`2秒后 num=${num}大于5  执行的resolve`})}else{reject({msg:`2秒后 num=${num}小于等于5  执行的reject`});}},1000);})}async function testTry(num){try{const data = await testPromise(num);console.log(data,'try success');}catch(err){console.log(err,'catch err');}}testTry(6)</script>
</body>
</html>

在这里插入图片描述

2、catch接收reject

<!DOCTYPE html>
<html lang="en">
<body><div style="text-align: center;">promise</div><div style="text-align: center;">try catch</div><script>function testPromise(num){return new Promise((resolve,reject)=>{setTimeout(()=>{if(num>5){resolve({msg:`2秒后 num=${num}大于5  执行的resolve`})}else{reject({msg:`2秒后 num=${num}小于等于5  执行的reject`});}},1000);})}async function testTry(num){try{const data = await testPromise(num);console.log(data,'try success');}catch(err){console.log(err,'catch err');}}testTry(3)</script>
</body>
</html>

在这里插入图片描述

总结

踩坑路漫漫长@~@

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

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

相关文章

小米公司研发岗的年终奖。。

小米 好的公司有年终且在年前发放&#xff0c;一般的公司有&#xff08;可能打折的&#xff09;年终且年后分批发放&#xff0c;不好的公司各有操作。 3 月已来&#xff0c;小米的年终也开始热议起来。 最近&#xff0c;一则「传小米年终打折&#xff0c;14薪能保住吗」冲上热搜…

怎么使用视频号下载助手下载视频号视频!自救一下

曾经的视频号下载助手&#xff0c;在互联网浪潮中面临的考验&#xff0c;现在轮到去水印提取下载了&#xff0c; 为什么要写 最近大家有没有发现&#xff0c;我写内容不仅仅是教程还和大家唠嗑了。 对&#xff01;我改写作方式了&#xff0c;但是我头疼&#xff0c;不知道和大…

多线程锁.

公平锁与非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁,这里类似排队买票,先来的人先买后来的人在队尾排着,这是公平的Lock lock new Reentrantlock(true);/true表示公平锁,先来先得非公平锁指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请…

pytorch诗词生成3--创建模型

先上代码&#xff1a; import tensorflow as tf from dataset import tokenizer# 构建模型 model tf.keras.Sequential([# 不定长度的输入tf.keras.layers.Input((None,)),# 词嵌入层tf.keras.layers.Embedding(input_dimtokenizer.vocab_size, output_dim128),# 第一个LSTM层…

2024年游戏投影仪评测:当贝D5X Pro大屏玩游戏,沉浸感十足

对于年轻人来说&#xff0c;投影仪是打造家居氛围感的神器&#xff0c;它不仅可以替代电视作为主要的观影设备&#xff0c;更能从尺寸、画面效果上模拟电影院的效果&#xff0c;从而在家实现超大屏观影。 但如果你只是把投影仪当做电视来用的话&#xff0c;那多少有点浪费了&a…

GDPU 竞赛技能实践 天码行空3

1. 五星填数 &#x1f496; 源代码 public class Main {static int[] nums new int[11];static boolean[] used new boolean[13];static long ans 0;static{used[7] true;used[11] true;}public static void main(String[] args){dfs(1);System.out.println(ans / 10);//…

OSCP靶场--Depreciated

OSCP靶场–Depreciated 考点(1. graphql枚举 2.CVE-2021-4034提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.155.170 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-13 04:19 EDT Nmap scan report for 192.168.…

Mock.js 基本语法与应用笔记

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Lombok简介、使用、工作原理、优缺点

学习目标&#xff1a; 目标 Lombok简介、使用、工作原理、优缺点 学习内容&#xff1a; 内容 定义 Lombok 是一个 Java 库&#xff0c;它提供了很多有用的注解来简化 Java 代码的编写。 作用&#xff1a; 使用 Lombok 可以用一些简洁的注解来自动生成大量常见的 Java 代码&a…

整块代码自动生成、智能括号匹配……CodeGeeX编程提效,功能再升级!

CodeGeeX插件功能持续打磨&#xff0c;希望成为开发者更高效的智能编程工具&#xff0c;提高开发速度和代码质量。今天介绍VSCode中最新的v2.4.0版本插件新功能&#xff0c;让你在编写代码时更加得心应手。 一、新增block代码块生成的设置 CodeGeeX插件中&#xff0c;以往针对…

智慧城市与绿色出行:共同迈向低碳未来

随着城市化进程的加速&#xff0c;交通拥堵、空气污染、能源消耗等问题日益凸显&#xff0c;智慧城市与绿色出行成为了解决这些问题的关键途径。智慧城市利用信息技术手段&#xff0c;实现城市各领域的智能化管理和服务&#xff0c;而绿色出行则强调低碳、环保的出行方式&#…

场景化解决方案|JumpServer堡垒机助力电商跨境出海

随着经济全球化和信息技术的快速发展&#xff0c;中国企业纷纷凭借自身的优势投身国际舞台&#xff0c;同时国家政策的支持也让跨境电商得到了快速的发展。跨境电商是指在全球范围内进行商品交易和商业活动的电子商务模式。与传统的电商平台相比&#xff0c;跨境电商不受地域限…