当前位置:网站首页>promise学习笔记
promise学习笔记
2022-08-08 15:51:00 【刘家奕_】
(1)Promise的介绍
(1) 异步编程

(2)为什么要用Promise?
(1)指定回调函数的方式更加灵活
(2)支持链式调用,可以解决回调地狱问题
回调地狱-------->(十分复杂)
(2)Promise的初体验
实现以下效果
(1)普通写法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div class="container">
<h2 class="page-header">Promise初体验</h2>
<button class="btn btn-primary" id="btn">点击抽奖</button>
</div>
<script>
//生成随机数
function rand(m, n) {
return Math.ceil(Math.random() * (n - m + 1)) + m - 1;
}
const btn = document.querySelector("#btn");
btn.addEventListener("click", function () {
setTimeout(() => {
let n = rand(1, 100);
if (n <= 30) alert("恭喜恭喜,奖品为10万 RMB 劳斯莱斯优惠券");
else alert("再接再厉");
}, 2000);
});
</script>
</body>
</html>
(2)Promise写法
<script>
//生成随机数
function rand(m, n) {
return Math.ceil(Math.random() * (n - m + 1)) + m - 1;
}
const btn = document.querySelector("#btn");
btn.addEventListener("click", function () {
const p = new Promise((resolve, reject) => {
setTimeout(() => {
let n = rand(1, 100);
if (n <= 30) resolve();
else reject();
}, 2000);
});
p.then(
() => {
alert("恭喜恭喜,奖品为10万 RMB 劳斯莱斯优惠券");
},
() => {
alert("再接再厉");
}
);
});
</script>
(1)Promise写法(改进)传了数字结果---->n
<script>
//生成随机数
function rand(m, n) {
return Math.ceil(Math.random() * (n - m + 1)) + m - 1;
}
const btn = document.querySelector("#btn");
btn.addEventListener("click", function () {
const p = new Promise((resolve, reject) => {
setTimeout(() => {
let n = rand(1, 100);
if (n <= 30) resolve(n);
else reject(n);
}, 2000);
});
p.then(
(n) => {
alert("恭喜恭喜,奖品为10万 RMB 劳斯莱斯优惠券,中奖数字为" + n);
},
(n) => {
alert("再接再厉,数字为" + n);
}
);
});
</script> <script>
//生成随机数
function rand(m, n) {
return Math.ceil(Math.random() * (n - m + 1)) + m - 1;
}
const btn = document.querySelector("#btn");
btn.addEventListener("click", function () {
const p = new Promise((resolve, reject) => {
setTimeout(() => {
let n = rand(1, 100);
if (n <= 30) resolve(n);
else reject(n);
}, 2000);
});
p.then(
(n) => {
alert("恭喜恭喜,奖品为10万 RMB 劳斯莱斯优惠券,中奖数字为" + n);
},
(n) => {
alert("再接再厉,数字为" + n);
}
);
});
</script>
(3)Promise实践练习
(1)fs读取文件(普通写法)
(2)Promise写法
边栏推荐
- 是时候展现真正实力了!揭秘2022华为开发者大赛背后的技术能力
- bzoj3693 圆桌会议 hall定理+线段树
- 软考 --- 软件工程(6)软项目管理
- Power BI简介
- 本博客目录及版权申明
- Streamsets Data Collector 3.12
- Tungsten Fabric SDN — OpenStack 与 Kubernetes 异构集群统一 SDN 方案
- Take you to play with the "Super Cup" ECS features and experiment on the pit [HUAWEI CLOUD is simple and far]
- 投资一个约20台桩的充电站需要多少钱?多久可以实现盈利?
- A16z:为什么 NFT 创作者要选择 cc0?
猜你喜欢
IBM3650M4的ESXI主机报警“其他主机硬件对象的状态”
Iptables防火墙iprange模块扩展匹配规则
【愚公系列】华为云云数据库MySQL的体验流程|【华为云至简致远】
JS Adder (DOM)
彻底理解 volatile 关键字及应用场景,面试必问,小白都能看懂!
Jingdong T9 pure hand type 688 pages of god notes, SSM framework integrates Redis to build efficient Internet applications
All volunteers V853 chip Tina RTSP environment set up
一文读懂字节跳动“埋点验证平台”
A16z:为什么 NFT 创作者要选择 cc0?
分布式服务治理
随机推荐
你好,这个没办法执行是啥原因啊,没登录账号,ecs里面自己安装的mysql
腾讯超大 Apache Pulsar 集群的客户端性能调优实践
PayPal无差别封号潮,被围剿的站群模式还能玩多久?如何避免shopify封店
文档管理系统:攻克这3个痛点,解决80%企业文档管理难题
【软件工程之美 - 专栏笔记】40 | 最佳实践:小团队如何应用软件工程?
如何制作网页
bzoj2816 [ZJOI2012] Network
Thread local storage ThreadLocal
手机注册股票开户的流程?网上开户安全?
保险,一生必备
[Unity entry plan] Use the double blood bar method to control the blood loss speed of the damage area
【愚公系列】华为云云数据库MySQL的体验流程|【华为云至简致远】
Share these new Blender plugins that designers must not miss in 2022
Tungsten Fabric SDN — OpenStack 与 Kubernetes 异构集群统一 SDN 方案
MySQL中UNION和UNION ALL的区别
Shell三剑客之sed命令详解
全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
Go 语言 Strconv 库常用方法
Is the current safe and reliable domestic futures account opening process?
投资一个约20台桩的充电站需要多少钱?多久可以实现盈利?