基本语法
- async 函数:定义一个异步函数,语法为
async function functionName() { /* 函数体 */ }
。异步函数始终返回一个 Promise 对象。如果函数的返回值不是 Promise,JavaScript 会自动将其包装成已解决状态(resolved)的 Promise。
- await 关键字:只能在
async
函数内部使用。它用于暂停 async
函数的执行,直到其等待的 Promise 被解决(resolved)或被拒绝(rejected)。语法为 let result = await promise;
,这里 promise
是一个 Promise 对象,await
会等待这个 Promise 完成,并返回其解决的值(resolved value)。如果 Promise 被拒绝,await
会抛出错误,可以使用 try...catch
块来捕获。
常见异步操作场景
- 网络请求:例如使用
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();
- 文件系统操作(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();
- 数据库操作:比如使用
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();