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

<Meta title='@dxtmisha/vi/functional-basic/Functions/executePromise - Thực thi Promise hoặc hàm'/>

# `executePromise`

Một tiện ích mạnh mẽ để thực thi và chờ đợi kết quả từ các nguồn linh hoạt một cách an toàn. Nó xử lý các giá trị đồng bộ, Promise và các hàm (cả đồng bộ và bất đồng bộ) bằng cách đảm bảo kết quả cuối cùng luôn được giải quyết và trả về dưới dạng Promise.

Bên dưới, nó tận dụng `executeFunction` để thực thi các hàm và sau đó đảm bảo rằng nếu kết quả là một `Promise`, nó sẽ được chờ đợi (await) đúng cách.

**Tham số:**
- `callback: ((...args: any[]) => Promise<T>) | ((...args: any[]) => T) | T` — Nguồn để thực thi hoặc giải quyết.
- `...args: any[]` (tùy chọn) — Các đối số được truyền vào hàm nếu `callback` có thể gọi được.

**Trả về:**
`Promise<T>` — Một promise giải quyết thành giá trị cuối cùng được tính toán hoặc được cung cấp.

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

// 1. Chờ đợi một hàm bất đồng bộ
const fetchData = async (id: number) => {
  return await fetch(`/api/user/${id}`).then(res => res.json())
}
const user = await executePromise(fetchData, 123)

// 2. Xử lý một hàm đồng bộ
const getName = () => 'John Doe'
const name = await executePromise(getName) // trả về Promise giải quyết thành 'John Doe'

// 3. Giải quyết một giá trị tĩnh
const result = await executePromise('Dữ liệu tức thời')
```
