# async.all (Compartilhado)

> Roda cada função da lista na sua própria thread, todas ao mesmo tempo, e faz a thread atual esperar até todas terminarem.

- **Plataforma**: MY Multiplayer (MYMP)
- **Tipo**: Função Lua
- **Lado**: Compartilhado
- **Categoria**: Tempo e assíncrono
- **URL**: https://wiki.mymp.gg/pt/async.all

## Sintaxe

```lua
any async.all(table tasks)
```

## Parâmetros

| Nome | Tipo | Descrição |
| --- | --- | --- |
| `tasks` | `table` | Lista de funções. Entradas que não são funções passam direto para o resultado. |

## Retorno

Um valor por entrada da lista, na mesma ordem: o primeiro valor que cada função devolveu, ou a própria entrada se ela não é uma função. Só funciona dentro de uma thread async. Fora dela, registra um erro e devolve `false`.

## Exemplo

```lua
async.thread(function()
    local first, second = async.all({
        function()
            async.wait(300)
            return "first"
        end,
        function()
            async.wait(100)
            return "second"
        end,
    })
    outputDebugString(first .. " " .. second)
end)
```

### Atenção

Se uma das funções dá erro, ele vira um erro na thread que espera, e o resultado das outras se perde.

## Veja também

- [async.promise (Compartilhado)](https://wiki.mymp.gg/pt/async.promise.md): Roda handler(resolve, reject) numa thread nova e faz a thread atual esperar até ele chamar resolve ou reject. Serve para esperar uma função que responde por callback.
- [async.map (Compartilhado)](https://wiki.mymp.gg/pt/async.map.md): Chama handler(valor, chave) para cada entrada da tabela, na ordem de pairs, e junta numa lista os resultados que não são nil. O handler pode pausar com async.wait.
- [async.thread (Compartilhado)](https://wiki.mymp.gg/pt/async.thread.md): Roda uma função numa thread async nova, na hora. A chamada retorna quando a função termina ou faz a primeira pausa, como async.wait.
