Skip to main content

Examples

Basic Signal

local Signal = require(path.to.AcidSignal)

local signal = Signal.new()

signal:Connect(function(value)
print("received:", value)
end)

signal:Fire("hello") -- received: hello

Multiple Connections

local signal = Signal.new()

signal:Connect(function(value)
print("A:", value)
end)

signal:Connect(function(value)
print("B:", value)
end)

signal:Fire("hello")
-- A: hello
-- B: hello

Waiting for a Signal

local signal = Signal.new()

task.delay(2, function()
signal:Fire("done")
end)

local value = signal:Wait(5)
if value then
print("signal fired with:", value)
else
print("timed out!")
end

Using Once for One-Time Events

local signal = Signal.new()

signal:Once(function(player)
print("first player joined:", player.Name)
end)

Bound Args for Context

local signal = Signal.new()

local function onDamage(amount, source)
print(`took {amount} damage from {source}`)
end

signal:Connect(onDamage, "fire")
signal:Connect(onDamage, "poison")

signal:Fire(10)
-- took 10 damage from fire
-- took 10 damage from poison

Cleaning Up

local signal = Signal.new()

signal:Connect(function()
print("A")
end)

signal:Connect(function()
print("B")
end)

-- disconnect all at once
signal:DisconnectAll()