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
promise ,async 小记相关推荐
- Promise async/await的理解和用法
Promise && async/await的理解和用法 为什么需要promise(承诺)这个东西 在之前我们处理异步函数都是用回调这个方法,回调嵌套的时候会发现 阅读性 和 调试 的 ...
- ES6箭头函数以及promise/async/await测试案例
ES6箭头函数的运用 下面以一段代码解释 function one(){return 1 以上函数用箭头函数写步骤,参考下面代码 {}和里面的东西先删去 one = (里面写参数/无参数的里面为空)= ...
- vue错误提示:Error in v-on handler (Promise/async): “Error: Error“
报错信息如下 [Vue warn]: Error in v-on handler (Promise/async): "Error: Error"found in---> &l ...
- Error in created hook (Promise/async): “TypeError: Cannot read property ‘protocol‘ of undefined“ 的解决
Error in created hook (Promise/async): "TypeError: Cannot read property 'protocol' of undefined ...
- 【echarts报错】[Vue warn]: Error in mounted hook (Promise/async): “TypeError: Cannot read properties of
echarts安装创建图表时报这种错误:[Vue warn]: Error in mounted hook (Promise/async): "TypeError: Cannot read ...
- [Vue warn]: Error in v-on handler (Promise/async): “TypeError: Cannot read property ‘status‘ of 问题详解
错误样式: [Vue warn]: Error in v-on handler (Promise/async): "TypeError: Cannot read property 'stat ...
- vue报错解决:Error in v-on handler (Promise/async): “TypeError: Cannot read properties ofundefined
报错信息:[Vue warn]: Error in v-on handler (Promise/async): "TypeError: Cannot read properties of u ...
- angular2 学习笔记 ( Rxjs, Promise, Async/Await 的区别 )
Promise 是 ES 6 Async/Await 是 ES 7 Rxjs 是一个 js 库 在使用 angular 时,你会经常看见这 3 个东西. 它们都和异步编程有关,有些情况下你会觉得用它们 ...
- mysql回调地狱_5、Express异步读取Mysql数据库 callback/promise/async
一.Node异步 Node.js 异步编程的直接体现就是回调. 有了异步方法,我们可以一边操作数据库,一边执行其他命令,在数据库操作完成后,我们将查询数据作为回调函数的参数返回.这样在执行代码时就没有 ...
最新文章
- ajax提交Form
- 苹果系统的优点和缺点
- !-- --注释和%-- --%注释的区别
- (二分搜索法尺取法)subsequence
- 【例题+习题】【数值计算方法复习】【湘潭大学】(三)
- android 录音命令,音频延迟 | Android NDK | Android Developers
- redis set不可重复_Redis的使用
- python面向过程实践汉诺塔_递归汉诺塔-和递归汉诺塔相关的内容-阿里云开发者社区...
- JavaWeb初级篇-HttpPost使用教程
- 玩转云服务器,怎样用云服务器架设搭建游戏:浪剑天下架设教程,手把手教你架设游戏服务器,小白一看就会
- 生日在java中怎么写_怎样用java做个生日提醒?如果同一天有多个人过生日怎么做?...
- Solr与MongoDB集成,实时增量索引[转]
- mysql有numeric类型吗_mysql数值类型 - numeric
- 我所了解的一些路由器对比
- 关于字符串旋转问题的一些心得
- python 函数的使用方法
- 《互联网+流通——F2R助力传统产业创新与转型》一一1.1 “互联网+”的本质、演进与发展趋势...
- Linux内核中断处理“下半部”机制(超详细~)
- 链克袋鼠Linker创建链克账户教程
- (转)PMBOK/CMM/CMMI/OPM3
热门文章
- 你知道char *s和char s[]的区别吗?
- wat java_并发工具优于wati、notify(69)
- Datawhale组队-Pandas(下)时序数据(打卡)
- python部落稿酬_Python之父考虑重构Python解释器
- 图像目标分割_2 FCN(Fully Convolutional Networks for Semantic Segmentation)
- 数据结构之图:加权无向图与寻找最小生成树,Python——27
- php开发环境 ubuntu,Ubuntu配置PHP开发环境
- ACwing 4. 多重背包问题 I(DP)
- LeetCode 755. 倒水(模拟)
- 程序员面试金典 - 面试题 08.07. 无重复字符串的排列组合(回溯)