async和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));
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • async是es7新增的关键字,用于定义异步函数。通过async定义的函数返回一个Promise对象,可以通过.t...
    微语博客阅读 7,319评论 1 12
  • 最近在研究Identity,很多示例代码充斥着异步操作;而本身对async也不是身份了解,所以参考资料写了这么一篇...
    Aneko阅读 4,811评论 0 4
  • async async做为一个关键字放在函数的前面,表示函数是一个异步函数。async就是异步的意思。异步就是意味...
    meow_possion阅读 8,198评论 0 0
  • 前言 node.js的世界,从callback开始,不会止于async. 本文将给大家详细介绍关于async/aw...
    Dofw阅读 3,126评论 0 0
  • 上一篇文章已经写了async关键字,这次写一下await 关键字,await是等待的意思,那么它等待什么呢,它后面...
    Xuguangxing阅读 5,306评论 0 4

友情链接更多精彩内容