# 生命周期

## MAESTROSDK.beforeRefresh(handler)

注册一个函数，在 Cowork 刷新这个 Mini App 的标签页之前运行，比如用户按了刷新按钮时。用它保住未保存的内容：询问、保存，或取消刷新。

### 参数

| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `handler` | `() => boolean \| void \| Promise<boolean \| void>` | 是 | 每次刷新运行一次。返回 `false`（或 resolve 为 `false` 的 promise）会取消刷新。返回其他值则继续刷新 |

### 返回值

`() => void`：调用它可移除这个处理函数。

### 行为

- 处理函数按添加顺序依次运行，每个都会被 await。
- 第一个返回 `false` 的处理函数会取消刷新。处理函数抛出异常或 reject 也会取消刷新。
- 没有处理函数时，标签页立即刷新。
- 同一时间只处理一次刷新；正在处理时收到的第二次刷新请求会被忽略。
- `handler` 不是函数时会被忽略，返回的函数什么也不做。

### 示例

```js
const off = MAESTROSDK.beforeRefresh(async () => {
  if (!form.dirty) return;
  return await MAESTROSDK.confirm({ title: 'Refresh?', message: 'Unsaved changes will be lost.' });
});
// later
off();
```

## 相关

- [交互](https://docs.micromeet.ai/zh/miniapp-sdk/interaction.md): `confirm`，常在 `beforeRefresh` 里使用
- [概览](https://docs.micromeet.ai/zh/miniapp-sdk/overview.md): Mini App SDK 的所有模块
