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示例相关推荐

  1. 拿到JS异步函数返回值的几种方式

    在我们的编码过程中,为了满足业务需求,经常需要获取JS异步函数的返回值.今天就来汇总一下拿值的几种方式. 1,通过回调函数的方式来拿返回值,这个想必大家不会陌生 function getSomethi ...

  2. JS异步模式与Promise模式

    JS异步模式与Promise模式 - 转 引子 异步模式在web编程中变得越来越重要,对于web主流语言Javascript来说,这种模式实现起来不是很利索,为此,许多Javascript库(比如 j ...

  3. js异步函数(async/await)

    1.概念 异步函数也称为"asynac/await"(语法关键字),是ES6期约模式在ECMAScript函数中的应用.async/await是ES8新增的.这个特性让以同步方式写 ...

  4. JS 异步编程终极解决方案 async/await 的使用手册

    前言 async functions 和 await 关键字是最近添加到JavaScript语言里面的.它们是ECMAScript 2017 JavaScript版的一部分.简单来说,它们是基于pro ...

  5. ES6箭头函数以及promise/async/await测试案例

    ES6箭头函数的运用 下面以一段代码解释 function one(){return 1 以上函数用箭头函数写步骤,参考下面代码 {}和里面的东西先删去 one = (里面写参数/无参数的里面为空)= ...

  6. Promise讲解,async和await修饰符

    Promise的作用 Promise是Es6中的语法,用于解决异步回调的问题(回调地狱). 回调地狱:回调函数中嵌套回调 Promise解决了回调地狱 new Promise(( resolve, r ...

  7. JS异步执行,Promise用法

    Promise Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理且更强大.它最早由社区提出并实现,ES6将其写进了语言标准,统一了用法,并原生提供了Promise ...

  8. boost log 能不能循环覆盖_如何在 JS 循环中正确使用 async 与 await

    引言 async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案.目前,async / await这个特性已经是stage 3的建议 然而,由于部分开发人员对该语法糖原理的 ...

  9. [转]异步性能:了解 Async 和 Await 的成本

    原文地址:http://msdn.microsoft.com/zh-cn/magazine/hh456402.aspx 异步编程长时间以来一直都是那些技能高超.喜欢挑战自我的开发人员涉足的领域 - 这 ...

最新文章

  1. Linux进程状态解析之R、S、D、T、Z
  2. 字符串匹配算法(BF RK)
  3. redhat6.3的linux内核版本,1-6-RHEL6.3-内核升级(Red Hat Enterprise Linux Server6.3)@树袋飘零...
  4. 猜拳游戏php中Computer类,人机猜拳 (玩家、电脑、游戏、测试)四个类写法
  5. Python:代码规范和命名规范
  6. 【模型压缩】Only Train Once:微软、浙大等研究者提出剪枝框架OTO,无需微调即可获得轻量级架构...
  7. MSN下载2010最新版
  8. word自动生成目录和页码设置
  9. Elasticsearch的路由(Routing)特性
  10. 开心一刻:邪恶的小明
  11. 2006-10-30 18:37:00 著名Linux内核程序员大鹰 ox啊
  12. 匿名内部类的定义格式
  13. 【机器学习】训练集、验证集与测试集
  14. windows8 下载
  15. 用 Python 爬取糗事百科
  16. Win10 系统无法用自带的照片编辑器查看照片的原因
  17. EasyCode实现数据库到Swagger全自动化
  18. Linux下电骡aMule Kademlia网络构建分析5 —— 资源的发布
  19. 一汽大众的实际情况-------2000级毕业生
  20. 目标检测模型的评估指标mAP详解(附代码)

热门文章

  1. Exchange 2007r2 二,动手安装
  2. Ubuntu 16.04直接升级至20.04 (Upgrade from 16.04 to 20.04 directly)
  3. 基于Redis的限流系统的设计
  4. PYTHON网络爬虫与信息提取[网络爬虫协议](单元二)
  5. 如何在本地设置www.xxx.com,使其允许访问
  6. Socket通信客户端设计(Java)
  7. 最好用最方便的sqlite管理工具
  8. 批处理启动myeclipse
  9. solr的安装使用tomcat容器
  10. 接口测试--apipost接口断言详解