es6中await和async有什么作用

es6中await和async有什么作用

浏览次数:1362次
信息来源: 银河系资源网
更新日期: 2022-05-13
文章简介

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

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中const的用法是什么
« 上一篇
es6的map对象和原生对象有啥区别
下一篇 »
  • jquery怎么在元素内部增加元素
    594710阅读
    方法:1、用“$(指定元素).prepend(新元素)”或“$(新元素).prependTo(指定元素)”,可在开头增加元素;2、用“$(指定元素).append(新元素)”或“$(新元素).appendTo(指定元素)”,在末尾增加元素。本教程操作环境:...
  • css怎么去除a标签鼠标样式
    296035阅读
    在css中,可用cursor属性去除a标签的鼠标样式,该属性用于定义鼠标指针在一个元素边界范围内所用的鼠标样式,属性值设置为none时,会去除元素的鼠标样式,设置为default时,显示默认箭头样式,语法为“a{cursor:none...
  • react的脚手架是什么意思
    39954阅读
    在react中,脚手架是快速生成项目工程化结构工具的意思;React脚手架能够快速开始一个React的项目,生成一个通用的目录结构,并配置所需环境,其中包含基础的依赖库,只需要利用“npm install”就能够安装,节省了项...
  • 浅析Bootstrap中列表组、分页和进度条组件的用法
    39545阅读
    Bootstrap中怎么实现列表组、分页和进度条?下面本篇文章给大家介绍一下Bootstrap中列表组、分页和进度条组件的用法,希望对大家有所帮助!列表组使用.list-group选择列表组添加.active到 a.list-group-item以指示当...
  • JavaScript有没有stl库
    10026阅读
    JavaScript没有stl库。stl库是标准模板库,是一个具有工业强度的高效的“C++”程序库,用于提供基本的语言本身的数据结构等扩展支持,stl库被容纳与“C++”标准程序库中,因此在JavaScript中没有stl库。本教程操作环...
  • es6的模块导出使用什么方法
    5518阅读
    es6的模块导出使用的方法:1、导出默认模块,一个模块文件只能有一个默认模块,语法为“export default 需要导出的成员”;2、导出普通模块,一个模块文件可以有多个普通模块,语法为“export 按需导出的成员”。本教...
  • css3新增长度单位的使用方法是什么
    4261阅读
    使用方法:1、em表示相对于当前对象内文本的字体大小;2、rem表示相对于根元素的字体大小;3、ch表示数字0的大小;4、vh表示百分比视口的高度;5、vw表示百分比视口的宽度;6、ex表示当前字体的小写x字母的的高度或者...
  • 在css3中可实现缩放效果的是什么属性
    4224阅读
    在css3中可实现缩放效果的是transform属性。transform属性可以和scaleX()函数实现水平方向的缩放效果、可以和scaleY()函数实现垂直方向的缩放效果、可和“scale(x,y)”函数实现水平方向和垂直方向同时缩放。本教程操...
  • 使用javascript:void(0)的原因是什么
    4171阅读
    使用“javascript:void(0)”的原因是:可以防止链接跳转到其他页面,保留链接的样式,并且不让链接执行实际操作。void关键字用于指定要计算一个表达式但是不返回值,“void(0)”也就表示不进行任何操作。本教程操作环...
  • jquery怎么设置文本框只读
    4070阅读
    方法:1、利用“$(input元素)”语句获取文本框元素对象;2、利用attr()方法设置文本框只读,将readonly属性值设置为readonly即可,语法为“文本框元素对象.attr("readonly","readonly")”。本教程操作环境:windows1...

如本文对您有帮助,随意赞赏一下!