promise ,async 小记

Promise

Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值。

摇色子游戏,随机1-6的一个整数,并且将其返回。

function fn() {
return new Promise((resolve, seject) => {
setTimeout(() => {
let n = parseInt(Math.random) * 6 + 1,10// 1-6
resolve(n)
}, 3000)
})
}

fn().then(
  (x) => { console.log('色子的点数是' + x) },
  () => { console.log('色子坏了')}
)

 

async和await

**async function** 声明用于定义一个返回 AsyncFunction 对象的异步函数。异步函数是指通过事件循环异步执行的函数,它会通过一个隐式的 Promise 返回其结果。但是如果你的代码使用了异步函数,它的语法和结构会更像是标准的同步函数。

async function 声明异步函数

function 声明同步函数

function fn() {
return new Promise((resolve, seject) => {
setTimeout(() => {
let n = parseInt(Math.random) * 6 + 1,10// 1-6
resolve(n)
}, 3000)
})
}

async function test() {
   let n = await fn();
   console.log(n)
}

test()

再增加try...catch语句来捕获异常

function fn() {
return new Promise((resolve, seject) => {
setTimeout(() => {
let n = parseInt(Math.random) * 6 + 1,10// 1-6
           if (n>3){
               if (猜测 === '大') {
               resolve(n)
              } else {
                   reject(n);
              }
          } else {
               if (猜测 === '小') {
               resolve(n)
              } else {
                   reject(n);
              }
          }  
}, 3000)
})
}

async function test() {
   try {
let n = await fn("大");
  console.log("好嗨哟" + n)
  }catch (error) {
console.log("输光了" + n)
  }  
}

fn("大").then(f1, f2).then(f3, f4)
test()

为什么不使用promise.then,而使用async await?

使异步代码看起来更像是同步代码,async await看起来更清晰简单

 

如果有两个色子,并且猜大小都猜对了才算成功,该怎么做呢?

Promise.all() 这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有promise 对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立 即触发该promise对象的失败。

Promise.race() 当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子 promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该 promise对象。

function 猜大小() {
return new Promise((resolve, seject) => {
setTimeout(() => {
let n = parseInt(Math.random) * 6 + 1,10// 1-6
           if (n>3){
               if (猜测 === '大') {
               resolve(n)
              } else {
                   reject(n);
              }
          } else {
               if (猜测 === '小') {
               resolve(n)
              } else {
                   reject(n);
              }
          }  
}, 3000)
})
}

Promise.all([猜大小('大'), 猜大小('小')])
.then(() => {}, () => {})

async function test() {
   try {
let n = await Promise.all([猜大小('大'), 猜大小('小')]);
  console.log("好嗨哟" + n)
  }catch (error) {
console.log("输光了" + n)
  }  
}

 

转载于:https://www.cnblogs.com/yaokai729/p/11261264.html

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

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

相关文章

量化涌现:信息论方法识别多变量数据中的因果涌现

来源:集智俱乐部作者:Fernando E. Rosas, Pedro A. M. Mediano, Henrik J. Jensen等译者:潘佳栋审校:梁金编辑:邓一雪导语大量个体聚集起来,常常涌现出新的复杂结构。鸟儿聚集起来形成兼具灵活性与秩序的鸟群,大量神经元聚集产生强…

4.1_ 1_ 初识文件管理

4.1_ 1_ 初识文件管理

case函数,replace函数

(case 字段 when 数据1 then 输出1 when 数据2 then 输出2 when 数据3 then 输出3 else 其他数据输出一致 end) as 字段 replace(字段,原子字符串,新子字符串) as 字段 select username,(case rolewhen 0 then 班长when 1 then 课代表when 2 then 组长wh…

阿斯麦CEO:中国不太可能独立造出顶尖光刻机 但也别那么绝对

来源:世界先进制造技术论坛“中国不太可能独立复制(replicate)出顶尖的光刻技术,因为阿斯麦依赖于不懈的创新,以及整合只有从非中国供应商处才能获得的零部件。但我的意思并不是绝对不可能,因为中国的物理定…

2.42死锁的处理策略一预防死锁

2.42死锁的处理策略一预防死锁

day23-多态和

# 多态 什么是多态? # 一种事物具备多种不同的形态 例如:水 固态 气态 液态 ​大黄蜂:汽车人,汽车,飞机 # 官方解释: 多个不同类对象可以响应同一个方法,产生不同的结果 首先强调多态不是一种特殊的语法,而是一种状态,特性(既多个不同对象可以响应同一个方法,产生不同的结果),…

《科学》:中国科学家揭示,人脑中间神经元多样性从何而来?

来源:学术经纬编辑:药明康德内容团队编辑 在我们的大脑皮层中,有两类神经元源自发育的端脑结构。除了兴奋性神经元,中间神经元是另一类重要的神经元,它们可以通过释放γ-氨基丁酸(GABA&#xf…

快速入门虚拟机+linux安装(附带视频)

配合视频食用更佳哦~ 01_虚拟机Linux 快速入门 02_手把手教你安装centos7(不会你来打我) 这是bai du yun 群链接,存放UP主视频中的那个“开箱即用”虚拟机文件压缩包 https://pan.baidu.com/s/4hwvNmIS 文章目录下载地址概念介绍关于虚拟机&a…

Insert语句

问: 问题是::未处理System.Data.OleDb.OleDbException HResult-2147217900 Message语法错误 (操作符丢失) 在查询表达式 2014/12/1 0:00:00 中。 public void add(string addselect){oledbconn dataconn.getcon();oledbconn.Open();OleD…

03_linux 常用命令(上)

声明:此文档中的部分内容来自于培训班笔记,如有侵权,请联系UP主,即刻删除视频。03_linux 常用命令(上) 配合视频食用更佳哦~(点击蓝色字样,查看up主录制的视频) 内容要…

多模态AI崛起,2022年人工智能5大发展趋势

来源:CSDNnews转自:中国机器人网前言国外一家专注于开源和堆栈技术新闻网站 TheNewStark 盘点出 2022 年值得人们期待的五个人工智能发展趋势。随着深度学习的开放,人工智能在几年中快速发展,尖端技术慢慢向普及应用到各行各业。以…

OpenStack组件——Keystone身份认证

1.keystone介绍 keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云…

1_RabbitMQ初入门入门Hello消费者+生产者

文章目录1_RabbitMQ初入门1.RabbitMQ的介绍1.工作原理&发送/接收消息的流程2. 为什么要使用消息队列?3.使用了消息队列有什么缺点?2.安装RabbitMQ3.入门程序Hello_消费者&生产者_1.导入依赖2.生产者1.设置连接信息2.获取connection(连…

《Nature》:衰老后的核糖体发生了哪些致病变化

来源:生物通研究发现,产生蛋白质的细胞装配线会随着年龄的增长而停滞,从而引发雪球效应,增加错误折叠蛋白质的产量。在人类中,成堆的错误折叠蛋白质会导致与年龄相关的阿尔茨海默病和帕金森病。衰老会损害核糖体有效合…

[转载]eXeScope 6.50本地溢出分析

作 者: humourkyo时 间: 2009-03-30,21:03链 接: http://bbs.pediy.com/showthread.php?t84975无聊逛了下http://www.milw0rm.com 看最近有什么ODAY没,顺便挑一个分析下玩玩。于是就看到了这个http://www.milw0rm.com/exploits/8270是eXeScope 6.50 Local Buffer O…

饶毅:中国脑计划是我见过的最差科学经费管理,中国猴计划应该缓行

左:饶毅 右:蒲慕明来源:饶议科学 作者:饶毅原标题:中国猴计划应该缓行在我国上上下下左左右右普遍对支持科学研究有广泛共识,在我国具备一定支持科学研究的经济条件的情况下,科技部正在推动最大…

CSS每日学习笔记(0)

7.29.2019 1. CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部样式表通常存储在 CSS 文件中 多个样式定义可层叠为一…

2_RabbitMQ工作模式_Work queues_Publish/Subscribe_Routing_Topics_HeaderRpc

文章目录2_RabbitMQ工作模式1.Work queues2.Publish/Subscribe1.工作模式2.代码1.生产者1.指定消息队列相关消息2.建立连接&绑定队列3.发送消息完整代码:2.消费者1.指定消息队列相关消息2.建立连接&绑定队列3.实现消费方法&监听消息完整代码3.小结3.Rou…

1000亿美元!英特尔要在美国建世界最大芯片厂,美520 亿美元芯片法案接近敲定...

来源:新智元编辑:桃子 拉燕 时光1000亿美元芯片计划,要重振英特尔往日雄风!路透称,英特尔将投资200亿美元建设2家芯片制造工厂,并计划最终投资多达1000亿美元。新工厂的建设将于今年晚些时候开始&#xff0…