一次性掌握ES6/ES7异步处理

假定一个场景,等女朋友睡起来出去逛街,超过5s就不等了,自己打游戏了 ...

ES6 Promise 处理方式

promise 写法
promise链式调用方法,只有当异步处理成功后回到用.then(data => {}) 拿到异步处理成功后的数据
异步处理出错时,会调用.then(err => {}) 获取到异常
也就是说.then( data => {}, err => {}) 方法里有两个回调函数作为参数
或者还有第二种写法.then(data => {}).catch(err => {})


function waiting (ms) {return new Promise ( (resolve, reject) => {if(ms > 5000) {reject('long time')} else {setTimeout(() => {resolve(ms);}, ms)}})
}function main () {waiting(3000).then( success => {console.log(success);}, err => {console.log(err)})
}// 或者
function main() {waiting(3000).then(data => {console.log(data)}).catch(err => {console.log(err);})
}

ES7 Async/Await 处理方式

async 表明这个函数里面有异步操作,await总是写在async声明的函数中的
遇到awit,函数就会停止执行,等待异步操作结束,再执行后面的语句
异步操作获取的结果即为resolve回调函数的参数返回
异常即通过reject回调函数参数获取
注意,捕获异常时,我们往往需要在async函数体中使用 try catch 方式获取异常


let sleep = ms => {return new Promise ( (resolve, reject) => {if(ms > 5000) {reject('long time')} else {setTimeout(function() {resolve(ms)} ,ms)}})
}let play = (ms) => {console.log(`I wait you ${ms} s`)
}let main = async () => {try{let result = await sleep(3000);play(result)} catch (err) {throw err}
}

注意:await等的是什么?是promise是承诺 返回的是resolve回调函数里面的数据

更多用法可以参考:Promise && Async/Await

一次性掌握ES6/ES7异步处理相关推荐

  1. ES6/7 异步编程学习笔记

    前言 在ES6的异步函数出现之前,Js实现异步编程只有settimeout.事件监听.回调函数等几种方法 settTmeout 这种方法常用于定时器与动画的功能,因为其本质上其实是浏览器的WebAPI ...

  2. es6 对象中是否有键值_干货| ES6/ES7好玩实用的特性介绍

    本文介绍一些ES6/ES7好玩实用又简单的特性,或许对写代码的效率也有一定帮助噢. ES6/ES7的出现已经有一段时间了,里面的一些新特性你们是否了解呢?本骚年将结合自身的一些使用经历介绍一些简单实用 ...

  3. es6,es7,webpack 和 babel(爱前端)

    npm install -g cnpm --registry=https://registry.npm.taobao.org 默认安装位置: 一 ES6, ES7 简介和调试方法 1.1 简介 ECM ...

  4. Sencha Cmd 6/7 让你的 ExtJS6/7 项目使用 ES6/ES7/ES8 语法规范

    原文链接:https://blog.csdn.net/lovelyelfpop/article/details/78528107 Sencha Cmd 6.5 最大的变化: 支持动态加载包(dynam ...

  5. ES6/ES7常用语法记录

    记录比较常用的ES6/ES7语法 一.检测是否为数组 1.instanceof 方法 const arr = new Array() // const arr = [] arr instanceod ...

  6. 【复习资料】ES6/ES7/ES8/ES9资料整理(个人整理)

    一.介绍 现在的网络上已经有各样关于 ECMAScript 规范介绍和分析的文章,而我自己重新学习一遍这些规范,整理出这么一份笔记,比较精简,主要内容涵盖ES6.ES7.ES8.ES9,后续会增加面试 ...

  7. es6,es7,es8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用于不能被重新赋值的变量 2. 箭头函数 我们经常要给回调函数给一个父级的this 常用办法就是 ...

  8. ES6, ES7, ES8, ES9 以及 ES10 新特征

    目录 1.  ES6 新特征 (2015) 1.1 module 1.1.1 export 1.1.2 import 1.2 Arrow function (箭头函数) 1.2.1 箭头函数结构 1. ...

  9. ES6/ES7/ES8新特性汇总

    ES6起各个版本的新特性汇总 ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言.目前JavaScript使用的ECMAScript版本为ECMA-417.关于ECMA的 ...

最新文章

  1. 优秀Java程序员应该知道的20个实用开源库
  2. 谷歌宣布即将开放 .dev 顶级域名注册
  3. 高斯粒子滤波matlab,粒子滤波(Particle filter)matlab实现 | 学步园
  4. 4、Flutter 采坑记录篇二_依赖库不兼容
  5. linux dd 重装系统,发现用dd装系统真是简单快捷通用
  6. Python中的相对文件路径的调用
  7. ant如何形成时间轴和图库_如何让景观设计更具有逻辑性?
  8. CIO:IT优化刻不容缓
  9. UE4开发笔记1——UE4(虚幻4)引擎下载与安装
  10. SolarWinds盛邀技术专业人士参加第八届年度THWACKcamp虚拟IT活动
  11. 颜色是如何混合出来的
  12. 致远OA webmail.do任意文件下载 CNVD-2020-62422
  13. 基于不同IP地址下的虚拟主机配置以及基于不同端口下的虚拟主机配置
  14. 编程语言与数据库的关系
  15. 基于人脸识别的登录与注册(2)
  16. jq轮播图——无缝轮播
  17. Ocelot一个优秀的.NET API网关框架
  18. 杰夫•贝索斯:抵抗天赋的诱惑
  19. 函数式接口和Stream流式思想
  20. 贵州厉害的计算机学校,贵州2021年计算机学校好点的大专学校

热门文章

  1. 【BZOJ】1726 [Usaco2006 Nov]Roadblocks第二短路
  2. Android之自定义ViewPager实现图片的无线轮播
  3. matlab---边缘之sobel简单实例
  4. windows域中时间同步的解决方案
  5. 【机器学习】libsvm使用的数据格式
  6. Python学习笔记__6.1章 类和实例
  7. Flask-admin 使用总结
  8. C++文件输入和输出
  9. 【Binary Tree Level Order Traversal】cpp
  10. 浅谈Java throw, throws, try catch异常处理