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

<Meta title='@dxtmisha/ru/functional/Functions/computedEternity - Постоянное вычисляемое свойство'/>

# `computedEternity`

Создаёт вычисляемое свойство, которое вычисляется по требованию и кешируется. Значение обновляется автоматически при изменении зависимостей, но только если к нему был осуществлён доступ хотя бы один раз. Вотчер остаётся активным на протяжении всей работы приложения. Это полезно для свойств, которые должны сохраняться глобально после первого обращения.

**Параметры:**
- `getter: () => Promise<T> | T` — Функция, которая возвращает вычисляемое значение (может быть синхронной или асинхронной).
- `initialState?: T` — Начальное значение результата.

**Возвращает:**
`CustomRef<T>` — Реактивное вычисляемое свойство с результатом выполнения геттера.

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

// Начальное значение
const status = computedEternity(async () => {
  await new Promise(resolve => setTimeout(resolve, 1000))
  return 'online'
}, 'offline')
// Status.value будет 'offline' до завершения выполнения геттера

// Асинхронный геттер - будет вызван только при первом обращении к 'data.value'
const data = computedEternity(async () => {
  const response = await fetch('/api/data')
  return response.json()
})

// Синхронный геттер
const i = ref(0)
const double = computedEternity(() => i.value * 2)

console.log(double.value) // 0
i.value = 5
// double.value будет 10 при следующем обращении
```
