async await用法 状态机
时间: 2024-12-24 11:11:38 浏览: 4
`async/await` 是 JavaScript 中用于处理异步操作的一种简洁、直观的方式,它结合了 `Promise` 的优点,让异步代码看起来更像同步代码,易于理解和维护。在状态机上下文中,它们通常与递归或循环结构一起使用来模拟复杂的流程控制。
`async` 关键字修饰函数,使其返回一个 Promise,表示该函数内部包含一个异步操作。而 `await` 关键字用于暂停当前的异步函数执行,直到其内部的 Promise 解决(resolve)或者拒绝(reject)。下面是一个简单的例子:
```javascript
// 定义一个异步操作
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
if (response.ok) {
const data = await response.json();
return data;
} else {
throw new Error(`Failed to fetch data: ${response.statusText}`);
}
};
// 使用 try/catch 进行错误处理,并用状态机的方式来描述状态变化
try {
const currentState = 'FETCHING';
switch (currentState) {
case 'FETCHING':
const data = await fetchData();
// 根据数据更新状态或处理结果
if (data.success) {
currentState = 'PROCESSING';
} else {
console.error(data.error);
currentState = 'ERROR_OCCURRED';
}
break;
// 其他状态分支...
}
} catch (error) {
currentState = 'ERROR_OCCURRED';
}
阅读全文