首页 > 其他分享 >ES6 async

ES6 async

时间:2023-11-29 18:13:49浏览次数:36  
标签:ES6 return 函数 await Promise reject async

async

async 函数总返回的是一个 Promise 对象(不论是否有 return 语句)。

  • async 函数内部的 return 语句返回的值,作为 then() 回调函数的参数。

  • async 函数内部抛出的错误,返回的 Promise 对象变为 reject 状态,错误会被 catch 捕获到。

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

await 只能用在 async 函数中,用在普通函数中会报错

通常情况下,await 后边是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,直接返回对应的值。

await 后边是一个 thenable 对象(定义了 then 方法的对象),那么 await 会将其等同于 Promise 对象。

await 后边的 Promise 状态是 reject , 则 reject 的参数会作为 catch() 的回调函数的参数(即使是没有使用 return 返回 Promise)。

async function f() {
  // return await new Promise((resolve, reject) => resolve(1)) // res: 1(若没有使用 return 语句返回,输出结果是 res: undefined)
  await new Promise((resolve, reject) => reject('出错啦')) // err: 出错啦(即使没有使用 return 语句,错误也会被 catch 捕获到)
}
f().then(res => console.log("res:", res)).catch(err => console.log("err:", err))
  • await 后边异步操作出错, 等同于 async 函数返回的 Promise 对象状态是 reject

顶层 await

允许在模块的顶层独立使用 await 命令,主要目的是使用 await 解决模块异步加载的问题。

顶层 await 只能用在 ES6 模块,不能用在 CommonJS 模块。这是因为 CommonJS 模块的 require() 是同步加载,如果有顶层 await ,就没法处理加载了。

// import() 方法加载
const strings = await import(``);

如果加载多个包含顶层 await 命令的模块,加载命令是同步执行的。

标签:ES6,return,函数,await,Promise,reject,async
From: https://www.cnblogs.com/4shana/p/17865511.html

相关文章

  • ES6 Promise
    Promise一个容器,一个保存着某个未来才会结束的事件的结果。有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。一旦状态改变,就不会再变。constp=newPromise((resolve,reject)=>{resolve("ok")thrownewError("报错啦")})p.then(res=>consol......
  • ES6 Generator
    GeneratorGenerator函数是一个状态机,封装了多个内部状态。执行Generator函数会返回一个遍历器对象,返回的遍历器对象可以依次遍历Generator函数内部的每一个状态。函数特征:1.function关键字与函数名之间有一个星号。2.函数体内部使用yield表达式定义不同的内部状态。......
  • ES6 Iterator
    Iterator(遍历器)是一种接口,为各种不同的数据结构提供统一的访问机制。主要供for...of消费。每调用一次next()就会返回数据结构当前成员的信息:{value:'',done:false/true}value当前成员的值。done布尔值,遍历是否结束(即是否有必要再一次调用next()方法)。......
  • 基于WSAAsyncSelect模型的通信程序设计
    基于WSAAsyncSelect模型的通信程序设计一、问题描述编写Win32程序模拟实现基于WSAAsyncSelect模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递。客户端向服务器端发送“请输出从1到1000内所有的质数”,服务器回应客户端给出结果。二、代码实现①CInit......
  • C++标准库函数std::async
    1、std::asyncstd::async是C++11的标准库函数,用于创建执行异步任务并返回std::future对象来获取异步执行的结果状态。该函数最简单的用法如下所示:#include<iostream>#include<thread>#include<future>std::stringpromise_string(){for(inti=0;i<200;......
  • 【Python】async与await用法
    async用于修饰函数,将普通函数变为异步函数。asyncdeft2():print(2)直接调用异步函数不会返回结果,而是返回一个协程对象。协程需要通过其他方式来驱动,如async.run函数。await函数只能在异步函数中使用,可以通过该关键字,挂起当前协程,让另一个协程执行完毕,再次执行本协程......
  • C# async await 异步编程
    开始异步方法不等于多线程,await是等但又是不等。1.调用系统的async方法staticasyncTaskMain(string[]args){awaitFile.WriteAllTextAsync("a.txt","xxxxxxxxxx");strings=awaitFile.ReadAllTextAsync("a.txt");Console.WriteLine(s);}使......
  • .net 6 async await 取消Task任务
    引言在用await执行方法时,方法有时候会执行特别长时间,在执行过程中想中断方法,需要使用到CancellationToken类。控制台程序中取消Task任务一、创建一个执行需要很长时间的方法staticasyncTaskDownloadAsync(stringurl,intn, CancellationTokencancellationToken){......
  • 前端学习笔记202307学习笔记第六十七天-前端面试-es6对象基本解构方法和注意点2
       ......
  • 前端学习笔记202307学习笔记第六十七天-前端面试-es6对象基本解构方法和注意点1
     ......