# async.promise (Compartido)

> Ejecuta `handler(resolve, reject)` en un hilo nuevo y hace que el hilo actual espere hasta que llame a `resolve` o `reject`. Sirve para esperar una función que responde por callback.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Función Lua
- **Lado**: Compartido
- **Categoría**: Temporizadores y asíncrono
- **URL**: https://wiki.mymp.gg/es/async.promise

## Sintaxis

```lua
any async.promise(function handler)
```

## Parámetros

| Nombre | Tipo | Descripción |
| --- | --- | --- |
| `handler` | `function` | Función que recibe `resolve` y `reject`. Solo cuenta la primera llamada de cualquiera de los dos. |

## Retorno

Los valores pasados a `resolve`. Solo funciona dentro de un hilo async. Fuera de uno, registra un error y devuelve `false`.

## Ejemplo

```lua
local function delay(ms)
    return async.promise(function(resolve)
        setTimer(resolve, ms, 1, "done")
    end)
end

async.thread(function()
    local result = delay(500)
    outputDebugString(result)
end)
```

### Atención

`reject(valor)`, o un error dentro de `handler`, se convierte en un error en el hilo que espera. Envuélvelo en `pcall` para tratarlo.

## Ver también

- [async.all (Compartido)](https://wiki.mymp.gg/es/async.all.md): Ejecuta cada función de la lista en su propio hilo, todas a la vez, y hace que el hilo actual espere hasta que todas terminen.
- [async.thread (Compartido)](https://wiki.mymp.gg/es/async.thread.md): Ejecuta una función en un hilo async nuevo, en el acto. La llamada vuelve cuando la función termina o hace su primera pausa, como con async.wait.
- [fetchRemote (Servidor)](https://wiki.mymp.gg/es/fetchRemote.md): Hace una petición HTTP o HTTPS y entrega la respuesta a una función cuando llega.
