站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

es6中await和async有什么作用

时间:2022-05-06 [网络编程]作者:fabuyuan 浏览:5 次

es6中await和async的作用分别是:1、async用于声明一个函数是异步执行,并返回一个Promise对象;2、await用于等待一个异步方法执行完成,因为await只能用于async函数中,所以用于等待一个async函数的返回值。

本教程操作环境:windows10系统、ECMAScript 6.0版、Dell G3电脑。

es6中await和async有什么作用

async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。

await只能放在async函数里

await后面接一个会return new promise的函数并执行它。

在遇到await时,会阻塞后面的代码,先执行async外面的同步代码,

如果等待的是promise,等Promise完成,然后把 resolve 的参数作为 await 表达式的运算结果。

如果等待的是表达式,执行完async外面同步代码后再回来继续往下执行

async

async 函数(包含函数语句、函数表达式、Lambda表达式)会返回一个 Promise 对象。

如果在函数中 return 一个直接量,async 会把这个直接量通过 Promise.resolve() 封装成 Promise 对象。

如果 async 函数没有返回值,又该如何?很容易想到,它会返回 Promise.resolve(undefined)。

Promise 的特点——无等待,所以在没有 await 的情况下执行 async 函数,它会立即执行,返回一个 Promise 对象,并且,绝不会阻塞后面的语句。这和普通返回 Promise 对象的函数并无二致。

await

一般来说,都认为 await 是在等待一个 async 函数完成。不过按语法说明,await 等待的是一个表达式,这个表达式的计算结果是 Promise 对象或者其它值(换句话说,就是没有特殊限定)。

因为 async 函数返回一个 Promise 对象,所以 await 可以用于等待一个 async 函数的返回值,即promise的resolve(这里的值)。

await 不仅仅用于等 Promise 对象,它可以等任意表达式的结果,所以,await 后面实际是可以接普通函数调用或者直接量的。

如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。

为什么要用await

为了使我们的异步代码,更像同步的代码

有多个promise,怎么拿到所有的promise都结束后的结果

因为Promise.all()返回的也是一个promise所以如果要使用await拿到多个promise的值,可以直接await Promise.all()

【相关推荐:javascript视频教程、web前端】

以上就是es6中await和async有什么作用的详细内容,更多请关注站长家园其它相关文章!

本文标签:  ES6

转载请注明来源:es6中await和async有什么作用

本文永久链接地址:https://www.adminjie.com/post/12029.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • linux中什么是静态路由

      linux中什么是静态路由

      在linux中,静态路由是路由项由手动设置的一种路由方式;即使网络状态已经改变或重新被组态,静态路由也是固定不变的,静态路由由网络管理员逐项加入路由表,可用“r...

    • php数组相加会合并重复值么

      php数组相加会合并重复值么

      php数组相加不会合并重复值。php中可使用“+”运算符将一个或多个数组相加起来,会合并这些数组返回一个新数组,语法“数组1+数组2+..”,后面数组的元素会追...

    • php怎么去掉数组前一个元素

      php怎么去掉数组前一个元素

      方法:1、用“array_values($arr)”将数组转为索引数组;2、用“array_search(值,数组)”从索引数组中搜索值,并返回对应索引;2、用...

    • 浅析nodejs项目中的package.json的常见配置属性

      浅析nodejs项目中的package.json的常见配置属性

      本篇文章带大家了解一下node项目中的package.json配置文件,聊聊package.json中一些常见配置属性、环境相关属性、依赖相关属性和三方属性,希...

    • 聊聊如何利用uniapp开发一个贪吃蛇小游戏!

      聊聊如何利用uniapp开发一个贪吃蛇小游戏!

      如何利用uniapp开发一个贪吃蛇小游戏?下面本篇文章就手把手带大家在uniapp中实现贪吃蛇小游戏,希望对大家有所帮助!第一次玩贪吃蛇还隐约记得是?️后父亲给...

    热门文章