async和await关键字

简介: async(异步)用于定义一个异步函数。异步函数是一种返回 Promise 对象的函数,可以使用 await 关键字等待异步操作的结果,以同步的方式处理异步操作。

25. async和await关键字

1. async

async(异步)用于定义一个异步函数。异步函数是一种返回 Promise 对象的函数,可以使用 await 关键字等待异步操作的结果,以同步的方式处理异步操作。

//返回一个普通值,会被Promise.resolve()包装后返回
async function foo() {
   
  return 123
}
console.log(foo());//Promise {<fulfilled>: 123}
foo().then(res => console.log(res));//123
foo().then(console.log);//123

//返回Promise.resolve(), 效果一样, reject同理
async function foo() {
   
  return Promise.resolve(456)
}
foo().then(res => console.log(res));//456

//返回thenable对象
async function foo() {
   
  return {
   
    then(callback) {
   
      callback(789)
    }
  }
}
foo().then(res => console.log(res));//789

2. await

await(等待)用于等待一个异步操作的结果,并将其解析为该操作返回的值。在异步函数中使用 await 关键字可以实现异步操作的同步处理,以避免回调函数嵌套和复杂的错误处理。注:await关键字只能在异步函数中使用。

// 以前的异步代码
let p = new Promise((resolve, reject) => setTimeout(resolve, 2000, 123))
p.then(res => console.log(res));//123
// 使用async/await关键字的异步代码
async function foo() {
   
  let p = new Promise((resolve, reject) => setTimeout(resolve, 2000, 456))
  console.log(await p);
  console.log(789);
}
foo();//456  789

// 异步执行
async function foo() {
   
  await new Promise((resolve, reject) => setTimeout(resolve, 1000))
  console.log("1000ms后执行的代码");
}
foo();//1000ms后执行的代码

// 异步获取数据
async function getData() {
   
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
}

getData().then(data => console.log(data)).catch(error => console.log(error));
相关文章
|
4月前
|
SQL 数据采集 安全
Waf的分类和绕过Waf的方法有哪些?
WAF(Web应用防火墙)是保护Web应用的安全防线,常见类型包括软件型、硬件型、云WAF和自定义WAF。各类WAF各有优劣,云WAF因成本低、易部署广受欢迎。然而,WAF并非绝对安全,攻击者可通过增加负载、构造异常数据包、绕过白名单等方式尝试绕过防护。了解WAF原理与绕过技巧,有助于提升Web安全防护能力。
|
9月前
|
Java 测试技术 数据库
使用benchmarksql测试数据库处理能力
传统的OLTP业务,应用系统使用 java 开发,并且不建议使用存储过程,使用 benchmarksql 压测数据库最公平,既可以测试数据库性能,也可以测试JDBC驱动
641 88
|
7月前
|
Dart Linux iOS开发
JEB Pro v5.30 (macOS, Linux, Windows) - 逆向工程平台
JEB Pro v5.30 (macOS, Linux, Windows) - 逆向工程平台
592 0
JEB Pro v5.30 (macOS, Linux, Windows) - 逆向工程平台
|
机器学习/深度学习 PyTorch 语音技术
语音识别模型
Whisper 是 OpenAI 推出的语音处理项目,基于深度学习,具备高度智能化和准确性的语音识别、翻译和生成能力。通过丰富的数据集和先进的注意力机制,Whisper 在多种语言环境下表现出色,支持语音识别、翻译、口语识别和语音活动检测等多种任务。用户可以通过 Python 代码或命令行轻松使用 Whisper,完成高质量的语音处理任务。官网:https://openai.com/research/whisper,GitHub:https://github.com/openai/whisper。
|
安全 Unix Linux
深入理解 Linux 内核3
深入理解 Linux 内核
379 2
|
XML IDE 前端开发
IDEA忽略node_modules减少内存消耗,提升索引速度
在后端开发中,IDEA 在运行前端代码时,频繁扫描 `node_modules` 文件夹会导致高内存消耗和慢索引速度,甚至可能会导致软件卡死。为了改善这一问题,可以按照以下步骤将 `node_modules` 文件夹设为忽略:通过状态菜单右键排除该文件夹、在设置选项中将其加入忽略列表,并且手动修改项目的 `.iml` 文件以添加排除配置。这些操作可以有效提高IDE的运行性能、减少内存占用并简化项目结构,但需要注意的是,排除后将无法对该文件夹进行索引,操作文件时需谨慎。
1421 4
IDEA忽略node_modules减少内存消耗,提升索引速度
|
缓存 BI 数据处理
Cron表达式浅析
Cron表达式浅析
640 1
|
人工智能 算法 安全
强 AI 和弱 AI 之间的区别
强 AI 和弱 AI 之间的区别
|
SQL 安全 PHP
CTF--Web安全--SQL注入之Post-Union注入
CTF--Web安全--SQL注入之Post-Union注入
|
存储 NoSQL 安全
保护模式下的中断
保护模式下的中断
381 0