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

<Meta title='@dxtmisha/ru/functional-basic/Functions/executePromise - Выполнить Promise или функцию'/>

# `executePromise`

Надежная утилита для безопасного выполнения и ожидания результатов из различных источников. Она обрабатывает синхронные значения, промисы (Promises) и функции (как синхронные, так и асинхронные), гарантируя, что конечный результат всегда будет разрешен и возвращен в виде промиса.

Внутренне она использует `executeFunction` для вызова функций, а затем проверяет, является ли результат промисом, чтобы дождаться его завершения.

**Параметры:**
- `callback: ((...args: any[]) => Promise<T>) | ((...args: any[]) => T) | T` — Источник для выполнения или разрешения.
- `...args: any[]` (опционально) — Аргументы, которые будут переданы в функцию, если `callback` является вызываемым.

**Возвращает:**
`Promise<T>` — Промис, разрешающийся финальным вычисленным или предоставленным значением.

```typescript
import { executePromise } from '@dxtmisha/functional-basic'

// 1. Ожидание асинхронной функции
const fetchData = async (id: number) => {
  return await fetch(`/api/user/${id}`).then(res => res.json())
}
const user = await executePromise(fetchData, 123)

// 2. Обработка синхронной функции
const getName = () => 'Иван Иванов'
const name = await executePromise(getName) // возвращает Promise, разрешающийся в 'Иван Иванов'

// 3. Разрешение статического значения
const result = await executePromise('Мгновенные данные')
```
