import { Meta } from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/vi/functional/Functions/computedEternity - Thuộc tính tính toán vĩnh cửu'/>

# `computedEternity`

Tạo một thuộc tính tính toán được tính toán theo yêu cầu và được lưu vào bộ nhớ đệm. Giá trị được cập nhật tự động khi các phụ thuộc thay đổi, nhưng chỉ khi nó đã được truy cập ít nhất một lần. Watcher vẫn hoạt động trong suốt vòng đời của ứng dụng. Điều này đặc biệt hữu ích cho các thuộc tính cần tồn tại trên toàn cầu sau lần truy cập đầu tiên.

**Các tham số:**
- `getter: () => Promise<T> | T` — Một hàm trả về giá trị cần tính toán (có thể là đồng bộ hoặc bất đồng bộ).
- `initialState?: T` — Giá trị ban đầu của kết quả.

**Trả về:**
`CustomRef<T>` — Một ref tùy chỉnh phản ứng chứa kết quả đã giải quyết của getter.

```typescript
import { computedEternity } from '@dxtmisha/functional'

// Trạng thái ban đầu
const status = computedEternity(async () => {
  await new Promise(resolve => setTimeout(resolve, 1000))
  return 'online'
}, 'offline')
// Status.value là 'offline' cho đến khi getter được giải quyết

// Getter bất đồng bộ - sẽ chỉ được gọi khi 'data.value' được truy cập lần đầu tiên
const data = computedEternity(async () => {
  const response = await fetch('/api/data')
  return response.json()
})

// Getter đồng bộ
const i = ref(0)
const double = computedEternity(() => i.value * 2)

console.log(double.value) // 0
i.value = 5
// double.value sẽ là 10 trong lần truy cập tiếp theo
```
