SerweryWłasny serwerDla twórcówForumFAQDokumentacjaBezpieczeństwo
Pobierz launcher
  1. Dokumentacja
  2. Funkcje wspólne
  3. await

Funkcja

await

Serwer i klientTimeryTylko Trilogy Hub

Czeka w zadaniu async na wynik. Przyjmuje dwie formy. Pierwsza to funkcja-starter: dostaje resume i uruchamia coś, co kończy się callbackiem (zapytanie dbQuery, fetchRemote, timer). Gdy callback wywoła resume(...), await zwraca te same wartości. Druga forma to inne zadanie z async: await czeka, aż się skończy, i zwraca jego wyniki, a jeśli zadanie skończyło się błędem, rzuca ten błąd dalej (złapiesz go przez pcall).

Składnia

var await(function, task starter [, var ...])

Argumenty

starterfunction, task
Funkcja function(resume, ...) albo zadanie z async.
...var, opcjonalny = nil
Dodatkowe argumenty przekazane starterowi po resume.

Zwraca

Wartości przekazane do resume albo wyniki zadania.

Przykład

local db = dbConnect("sqlite", "gracze.db")

addCommandHandler("pieniadze", function(player)
    async(function()
        local qh = await(function(resume)
            dbQuery(resume, db, "SELECT money FROM gracze WHERE nick = ?", getPlayerName(player))
        end)
        local rows = dbPoll(qh, 0)
        local money = rows and rows[1] and rows[1].money or 0
        outputChatBox("Masz $" .. money, player)
    end)
end)

Uwagi

Tylko w zadaniu. Poza async funkcja zgłasza błąd only allowed inside async. Kolejne wywołania tego samego resume są ignorowane, a resume wywołane od razu w starterze też działa.

Zobacz też