上一篇熟悉了promise的具体过程:

promise的过程:

启动异步任务 => 返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指定多个)。

从promise的概念:{

1.promise是es6引入的一门新的JS的解决异步编程的方案。

2.从语法来说promise是一个构造函数

3.从功能上来说promise是一个封装了一个异步操作并可以获取其成功/失败结果的值的一个对象

}

我们可以知道promise不仅仅是封装了一个异步操作,并且可以获取其成功/失败结果的值。

还是以抽奖为例子,我们在抽奖的结果中加上所抽的号码

从代码中可以得知,resolvereject都可以携带参数,并且在下面通过promise对象的实例调用then方法时,在回调函数的参数中接收resolve和reject携带的参数


源码:

<!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>promise(2)</title>
</head> <body>
<div class="container">
<div id="btn">抽个奖</div>
</div>
</body> <script>
function random(m, n) {
return Math.ceil(Math.random() * (n - m + 1)) + m - 1
}//生成随机数 const btn = document.querySelector('#btn')
//获取按钮的dom元素
btn.addEventListener('click', function () { //resolve 解决 函数类型数据
//reject 拒绝 函数类型数据
const p = new Promise((resolve, reject) => {
setTimeout(() => {
let t = random(1, 100)
if (t < 50) {
resolve(t)//成功后的回调,将promise对象的状态设置为【成功】,并携带参数
} else {
reject(t)//失败后的回调,将promise对象的状态设置为【失败】,并携带参数
}
}, 2000)
})
//用实例化后的promise对象调用then方法,在参数中传入成功/失败后要执行的方法
p.then((t) => {//在箭头函数中接收resolve和reject携带的参数
alert('恭喜中奖,'+'中奖号码为:'+t)
}, (t) => {
alert("再接再厉,"+'您的号码为: '+t)
}) })
</script>
<style>
.container {
width: 100%;
height: 1000px;
background-color: aquamarine;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
} #btn {
width: 150px;
height: 50px;
background-color: rgb(217, 217, 230);
border-radius: 25px;
text-align: center;
line-height: 50px; }
</style> </html>

  

 

ES6 - promise(3)的更多相关文章

  1. ES6 - promise(1)

    今天决定对之前学过的一些前端的知识进行梳理和总结,因为最近都是独自承担项目的开发与搭建,所以先从前后端交互的第一线axios来梳理,复习axios首先一定要先复习promise对象. 什么是promi ...

  2. ES6 - promise(2)

    从上一篇中我们知道promise的概念,上一篇也提到了 promise的过程: 启动异步任务 => 返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指 ...

  3. 基础知识:Promise(整理)

    基础知识:Promise(整理) (来自牛客网)下面关于promise的说法中,错误的是(D) A. resolve和reject都是直接生成一个进入相应状态的promise对象,其参数就是进入相应状 ...

  4. ES6语法(3)—— 用promise()对象优雅的解决异步操作

    Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大. 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. ...

  5. 大白话讲解Promise(二)理解Promise规范

    上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理.所以,为了补全我们关于Promise的知识树,有必要理解Promise/A+规范,理解 ...

  6. 大白话讲解Promise(一)

    去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本 ...

  7. 关于promise(一)

    该新特性属于 ECMAScript 2015(ES6)规范,在使用时请注意浏览器兼容性. 由于ES6原生提供Promise,所以无需安装Promise库.但在ES5环境下我们可以使用bluebird库 ...

  8. Promise (1) 如何使用Promise

    Promise 也是面试高频问题, 今天我们来看看Promise是什么, 能做什么, 怎么用, 下一期我们自己来模拟一个myPromise 1  Promise 是什么 我们要学会自己给自己提问, 才 ...

  9. 【转】大白话讲解Promise(一)

    原文地址:https://www.cnblogs.com/lvdabao/p/es6-promise-1.html ES6 Promise 先拉出来遛遛 复杂的概念先不讲,我们先简单粗暴地把Promi ...

随机推荐

  1. vue 多级组件数据传递

    A包含B组件,B包含C组件   那么A 传递到C 组件可以通过 在B组件中绑定 $attrs 具体代码可以参见github: https://github.com/qiaoqiao10001/vueA ...

  2. 【合集】Python基础知识【第二版】

    更新部分 为了避免冗长的代码影响大家观感,将部分案例拆开 增加部分知识点,为了减少大家阅读的负担,尽可能使用短句子,但知识点不可能全覆盖,笔者不是写书,就算是写书也不可能全面,请同学们自行去补充 增加 ...

  3. Power App门户

    1.创建门户 在powerapp应用中添加新应用选择:门户. 填写名称和地址,地址写完后会检测可用,创建会等待几分钟. 2.门户组件 节,容器分为1.2.3列 1.文本:可编辑字体 2.图像:可选择连 ...

  4. 启动分区查找可以通过 fdisk -l命令

    这里有两个硬盘,一个硬盘有两个分区,sda1 的boot列 带*表示是启动分区,否则为空

  5. 得到一个a(10)到b(20)的随机数。包括10和20

  6. HCNP Routing&Switching之组播技术PIM-SM 稀疏模式

    前文我们了解了组播路由协议PIM以及PIM-DM密集模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16084310.html:今天我们来聊一聊PI ...

  7. 2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机)

    2021.11.09 P4824 [USACO15FEB]Censoring S与P3121 [USACO15FEB]Censoring G(KMP&&AC自动机) https://w ...

  8. 什么?你们公司还没有将JVM初始和最大堆内存大小设置为相同值?

    微信公众号:Java大家族 JVM将初始和最大内存大小设置为相同值的好处 启动应用程序时,我们指定初始内存大小和最大内存大小.对于在 JVM(Java 虚拟机)上运行的应用程序,初始和最大内存大小通过 ...

  9. 你不知道的Python容器

    你不知道的Python容器 你不知道的Python容器 散列表 ChainMap MappingProxyType 线性表 堆 参考资料 昨天阅读了<Python Tricks: The Boo ...

  10. 如何使用phpstudy搭建sqli-lab靶场

    一.环境准备 下载并安装phpstudy,链接如下: phpstudy下载 选择自己想要的版本,安装目录自己选,其他的一路默认即可 二.下载源码 源码链接:sqli-labs源码下载 选择Downlo ...