async function 与 function 区别
async function
和普通的 function
之间的主要区别在于它们处理异步操作的方式不同。以下是两者的一些关键特性:
async function: 异步函数标识为
async
,并且返回一个 Promise 对象。如果此函数中显式返回值,则 Promise 的状态将变为已解析,并以该值作为其结果;如果抛出错误,则 Promise 的状态将变为已拒绝,并将错误作为其原因。这类函数内部可以包含await
表达式,用来暂停和恢复执行该函数,等待 Promise 的解决或拒绝。function:普通函数没有
async
标识符,直接返回结果,而不是 Promise。它不能包含await
表达式。
以下是使用这两种函数的例子:
普通函数
function add(x, y) {
return x + y;
}
let result = add(1, 2); // 结果立即得到:3
异步函数
async function getJSON() {
let response = await fetch("https://api.example.com/data");
let data = await response.json();
return data;
}
getJSON().then(data => console.log(data)); // 数据在 Promise 解析后得到
在上面的异步函数示例中,fetch
和 response.json()
都返回 Promise,我们通过 await
关键字暂停并等待 Promise 解析,然后获取其结果。这使得处理异步操作更直观,代码读起来就像是同步代码。