ES6知识点整理之----async----语法

1、async函数返回一个 Promise 对象。

2、async函数内部return语句返回的值,会成为then方法回调函数的参数。

async function f() {
  return ‘hello world‘;
}

f().then(v => console.log(v))
// "hello world"

3、async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。

4、只有async函数内部的异步操作全部执行完,才会执行then方法指定的回调函数。

5、await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象。

async function f() {
  return await 123;
}

f().then(v => console.log(v))
// 123

await命令后面的 Promise 对象如果变为reject状态,则reject的参数会被catch方法的回调函数接收到。

6、只要一个await语句后面的 Promise 变为reject,那么整个async函数都会中断执行。

  • 如果希望不要中断,可以将await放在try...catch结构里面。
  • 另一种方法是await后面的 Promise 对象再跟一个catch方法,处理前面可能出现的错误。

7、使用注意点:

  • 最好把await命令放在try...catch代码块中
  • 多个await命令后面的异步操作,如果不存在继发关系,最好让它们同时触发
  • await命令只能用在async函数之中,如果用在普通函数,就会报错。
  • 如果希望多个请求并发执行,可以使用Promise.all方法。
  • 目前,esm模块加载器支持顶层await,即await命令可以不放在 async 函数里面,直接使用。必须使用esm加载器,才会生效。

原文地址:https://www.cnblogs.com/adhehe/p/9682774.html

时间: 2024-11-06 07:13:02

ES6知识点整理之----async----语法的相关文章

ES6知识点整理之第5篇----声明变量总结与global

1.ES6声明变量的6种方法: var function let const import class 2.ES5 的顶层对象,在各种实现里面是不统一的. 浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window. 浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self. Node 里面,顶层对象是global,但其他环境都不支持. 现在有一个提案,在语言标准的层面,引入global作为顶层对象.也就是说,在所有环境下,gl

ES6知识点整理之----正则表达式扩展

1.如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符.而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符. new RegExp(/abc/ig, 'i').flags // "i" 2.字符串对象共有 4 个方法,可以使用正则表达式:match().replace().search()和split().ES6 将这 4 个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上

ES6知识点整理之----数组扩展----API新增

Array.from() 用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map). 只要是部署了 Iterator 接口的数据结构,Array.from都能将其转为数组. 任何有length属性的对象,都可以通过Array.from方法转为数组,而扩展运算符就无法转换. Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回

ES6知识点整理之----Generator----概述

1.ES6 提供的一种异步编程解决方案 2.是一个状态机,封装了多个内部状态. 3.是一个遍历器对象生成函数.返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态. 4.Generator 函数是一个普通函数,但是有两个特征.一是,function关键字与函数名之间有一个星号:二是,函数体内部使用yield表达式,定义不同的内部状态. function* helloWorldGenerator() { yield 'hello'; yield 'world'; return

ES6知识点整理之----Proxy----API

get() 用于拦截某个属性的读取操作,可以接受三个参数,依次为目标对象.属性名和 proxy 实例本身(严格地说,是操作行为所针对的对象),其中最后一个参数可选. var person = { name: "张三" }; var proxy = new Proxy(person, { get: function(target, property) { if (property in target) { return target[property]; } else { throw n

ES6知识点整理之----Proxy----this

1.在 Proxy 代理的情况下,目标对象内部的this关键字会指向 Proxy 代理. 2.有些原生对象的内部属性,只有通过正确的this才能拿到,所以 Proxy 也无法代理这些原生对象的属性. const target = new Date(); const handler = {}; const proxy = new Proxy(target, handler); proxy.getDate(); // TypeError: this is not a Date object. thi

Python--matplotlib绘图可视化知识点整理

Python--matplotlib绘图可视化知识点整理 强烈推荐ipython 原文:http://michaelxiang.me/2016/05/14/python-matplotlib-basic/ 无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入PyLab模式,已经导入了matplotlib库与相关软件包(例如Numpy和Scipy),额可以直接使用相关库的功能. 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找.

《javascript高级程序设计》第二、三章知识点整理

第二章知识点总结 1.<script>在html中的使用 主要功能:在页面中嵌入javascript代码或包含外部javascript文件. 常用属性: type:用于定义脚步代码的语言类型,默认为text/javascript. src:包含外部域的javascript文件. defer:表示脚本会在整个页面加载完毕之后运行,只对外部文件有效,最好只包含一个延迟脚本. async:脚本在不妨碍其他操作的情况下立即下载(不保证下载文件的顺序). 插入位置:在页面<body>标签页面

JSP页面开发知识点整理

刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法http://www.runoob.com/jsp/jsp-syntax.html <% 代码片段 %><% out.println("Hello World!"); %> <%! 变量声明 %><%! int i = 0; %> <%= 表