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月前
|
前端开发 JavaScript
什么是 async、await ?
什么是 async、await ?
|
10月前
|
JSON 前端开发 JavaScript
async/await的应用
async/await的应用
48 0
|
前端开发 JavaScript
|
1天前
|
前端开发
async、await
async、await
|
4月前
|
前端开发 JavaScript 开发者
阿珊带你深入理解 async/await 函数
阿珊带你深入理解 async/await 函数
|
4月前
|
前端开发 JavaScript
async/await
async/await
31 0
|
4月前
|
JSON 前端开发 JavaScript
什么是async和await?
什么是async和await?
37 0
|
4月前
|
JSON 前端开发 JavaScript
async/await语法
async/await语法
44 0
|
4月前
|
前端开发 JavaScript
|
前端开发 API
Async/Await 在何时该使用,何时不使用
使用 async/await 是在处理异步操作时的一种更简洁、易读的方式,它基于 Promise,并且可以使异步代码看起来像同步代码一样编写。然而,并不是所有情况下都需要使用 async/await。
187 0