js 异步函数讲解: Promise、async和await示例
ECMAScript 2015,也称为 ES6,引入了 JavaScript Promise 对象,用于异步执行运行时间较长的任务。
有两种方式来实现异步编程: 一是使用Promise对象,二是使用async关键字
使用Promise对象
基本用法如下:
/*** 使用Promise对象执行一个任务*/var promise = new Promise((resolve, reject) => {setTimeout(function() {resolve('promise end');}, 1000);});console.log("main process start")/**then可以传入成功和失败的回调函数*/promise.then((msg) => {console.log(msg);})console.log("main process stopped");
执行结果:
main process start
main process stopped
promise end
使用async关键字
更简单的方法是使用async关定义一个异步函数:
/*** 测试辅助函数: 回调函数*/function callback(str){console.log(str);}/*** 测试辅助函数: sleep函数用于模拟长时间执行任务**/function sleep (time) {return new Promise((resolve) => setTimeout(resolve, time));}/*** 异步函数*/async function func1(callback) {await sleep(3000);callback("func1 callback");return "func1 return";}/*** 通过回调和返回值两种方式获得异步函数处理的结果*/console.log("main process start")func1(callback).then(res=>{console.log(res);});console.log("main process stopped");
执行结果:
main process start
main process stopped
func1 callback
func1 stopped
func1 return
js 异步函数讲解: Promise、async和await示例相关推荐
- 拿到JS异步函数返回值的几种方式
在我们的编码过程中,为了满足业务需求,经常需要获取JS异步函数的返回值.今天就来汇总一下拿值的几种方式. 1,通过回调函数的方式来拿返回值,这个想必大家不会陌生 function getSomethi ...
- JS异步模式与Promise模式
JS异步模式与Promise模式 - 转 引子 异步模式在web编程中变得越来越重要,对于web主流语言Javascript来说,这种模式实现起来不是很利索,为此,许多Javascript库(比如 j ...
- js异步函数(async/await)
1.概念 异步函数也称为"asynac/await"(语法关键字),是ES6期约模式在ECMAScript函数中的应用.async/await是ES8新增的.这个特性让以同步方式写 ...
- JS 异步编程终极解决方案 async/await 的使用手册
前言 async functions 和 await 关键字是最近添加到JavaScript语言里面的.它们是ECMAScript 2017 JavaScript版的一部分.简单来说,它们是基于pro ...
- ES6箭头函数以及promise/async/await测试案例
ES6箭头函数的运用 下面以一段代码解释 function one(){return 1 以上函数用箭头函数写步骤,参考下面代码 {}和里面的东西先删去 one = (里面写参数/无参数的里面为空)= ...
- Promise讲解,async和await修饰符
Promise的作用 Promise是Es6中的语法,用于解决异步回调的问题(回调地狱). 回调地狱:回调函数中嵌套回调 Promise解决了回调地狱 new Promise(( resolve, r ...
- JS异步执行,Promise用法
Promise Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理且更强大.它最早由社区提出并实现,ES6将其写进了语言标准,统一了用法,并原生提供了Promise ...
- boost log 能不能循环覆盖_如何在 JS 循环中正确使用 async 与 await
引言 async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案.目前,async / await这个特性已经是stage 3的建议 然而,由于部分开发人员对该语法糖原理的 ...
- [转]异步性能:了解 Async 和 Await 的成本
原文地址:http://msdn.microsoft.com/zh-cn/magazine/hh456402.aspx 异步编程长时间以来一直都是那些技能高超.喜欢挑战自我的开发人员涉足的领域 - 这 ...
最新文章
- Linux进程状态解析之R、S、D、T、Z
- 字符串匹配算法(BF RK)
- redhat6.3的linux内核版本,1-6-RHEL6.3-内核升级(Red Hat Enterprise Linux Server6.3)@树袋飘零...
- 猜拳游戏php中Computer类,人机猜拳 (玩家、电脑、游戏、测试)四个类写法
- Python:代码规范和命名规范
- 【模型压缩】Only Train Once:微软、浙大等研究者提出剪枝框架OTO,无需微调即可获得轻量级架构...
- MSN下载2010最新版
- word自动生成目录和页码设置
- Elasticsearch的路由(Routing)特性
- 开心一刻:邪恶的小明
- 2006-10-30 18:37:00 著名Linux内核程序员大鹰 ox啊
- 匿名内部类的定义格式
- 【机器学习】训练集、验证集与测试集
- windows8 下载
- 用 Python 爬取糗事百科
- Win10 系统无法用自带的照片编辑器查看照片的原因
- EasyCode实现数据库到Swagger全自动化
- Linux下电骡aMule Kademlia网络构建分析5 —— 资源的发布
- 一汽大众的实际情况-------2000级毕业生
- 目标检测模型的评估指标mAP详解(附代码)
热门文章
- Exchange 2007r2 二,动手安装
- Ubuntu 16.04直接升级至20.04 (Upgrade from 16.04 to 20.04 directly)
- 基于Redis的限流系统的设计
- PYTHON网络爬虫与信息提取[网络爬虫协议](单元二)
- 如何在本地设置www.xxx.com,使其允许访问
- Socket通信客户端设计(Java)
- 最好用最方便的sqlite管理工具
- 批处理启动myeclipse
- solr的安装使用tomcat容器
- 接口测试--apipost接口断言详解