async
和 await
是 JavaScript 中用于处理异步操作的语法糖,它们通常与 Promise 对象一起使用,可以更方便地编写和管理异步代码。
async 函数 :
async
函数是一个特殊的函数,它在定义时会隐式返回一个 Promise 对象。在 async 函数内部,可以使用 await
关键字来等待 Promise 对象的解析,并将其结果返回。
示例:
ts
async function fetchData() {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
return data;
}
await 表达式 :
await
关键字只能在 async 函数内部使用,用于等待一个 Promise 对象的解析。它暂停 async 函数的执行,直到 Promise 对象的状态变为 resolved(解析)或 rejected(拒绝)为止。
示例:同上。
使用 async/await 进行异步操作 :
在 async 函数外部可以使用 then
方法或者 await
关键字来处理异步函数返回的 Promise 对象。
示例:
js
async function main() {
try {
let data = await fetchData();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
main();
在使用 async
和 await
时,需要注意以下几点:
await
关键字只能在 async 函数内部使用,否则会导致语法错误。await
关键字只能用于等待 Promise 对象的解析,不能用于普通值或非 Promise 对象。- 使用
async
函数定义的函数会返回一个 Promise 对象,因此可以使用then
方法或者catch
方法来处理函数返回的结果或错误。 async
函数内部的错误会被 Promise 对象的catch
方法捕获,因此建议使用try...catch
结构来处理可能出现的错误。
await后面跟一个promise数组会怎么样?
应该跟一个promise,而不是数组。所以promise数组应该放入promise.all。