MST

星途 面试题库

面试题:JavaScript 中 async 和 await 的基本语法及应用场景

请简要描述 JavaScript 中 async 函数和 await 关键字的基本语法,并举例说明它们适用于哪些常见的异步操作场景。
30.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

基本语法

  1. async 函数:定义一个异步函数,语法为 async function functionName() { /* 函数体 */ }。异步函数始终返回一个 Promise 对象。如果函数的返回值不是 Promise,JavaScript 会自动将其包装成已解决状态(resolved)的 Promise。
  2. await 关键字:只能在 async 函数内部使用。它用于暂停 async 函数的执行,直到其等待的 Promise 被解决(resolved)或被拒绝(rejected)。语法为 let result = await promise;,这里 promise 是一个 Promise 对象,await 会等待这个 Promise 完成,并返回其解决的值(resolved value)。如果 Promise 被拒绝,await 会抛出错误,可以使用 try...catch 块来捕获。

常见异步操作场景

  1. 网络请求:例如使用 fetch 进行 HTTP 请求。
async function getData() {
    try {
        let response = await fetch('https://example.com/api/data');
        let data = await response.json();
        return data;
    } catch (error) {
        console.error('Error fetching data:', error);
    }
}
getData();
  1. 文件系统操作(Node.js 环境):例如读取文件。
const fs = require('fs').promises;

async function readFileContent() {
    try {
        let content = await fs.readFile('example.txt', 'utf8');
        console.log(content);
    } catch (error) {
        console.error('Error reading file:', error);
    }
}
readFileContent();
  1. 数据库操作:比如使用 mongoose 进行 MongoDB 数据库操作。
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydb');

async function findUser() {
    try {
        const User = mongoose.model('User', new mongoose.Schema({ name: String }));
        let user = await User.findOne({ name: 'John' });
        console.log(user);
    } catch (error) {
        console.error('Error querying database:', error);
    }
}
findUser();