Warp/docs/api/1.0/signal.md
EternityDev aa693aee4f v1.0.11
2024-05-19 13:17:07 +07:00

2.9 KiB

Signal

A alternative of BindableEvent.

.Signal

Create new Signal.

::: code-group

(
	Identifier: string
)
local Signal1 = Warp.Signal("Signal1")

:::

.fromSignalArray

Create new Signal.

::: code-group

(
    { string }
)
local Signals = Warp.fromSignalArray({"Signal1", "Signal2"})
Signals.Signal1:Connect(function(...) end)
Signals.Signal2:Connect(function(...) end)

:::

:Connect

::: code-group

(
	callback: (...any) -> ()
)
Signal1:Connect(function(...)
	print(...)
end)

:::

:Once

This function likely :Connect but it disconnect the signal once it fired.

::: code-group

(
	callback: (...any) -> ()
)
Signal1:Once(function(...)
	print(...)
end)

:::

:Disconnect

Disconnect the signal connection.

::: code-group

(
	key: string
)
local connection = Signal1:Connect(function(...) end) -- store the key

Signal1:Disconnect(connection)

:::

::: warning This requires key to disconnect a signal connection. :::

:DisconnectAll

Disconnect All signal connections.

Signal1:DisconnectAll()

:Fire

Fire the signal (Immediate)

::: code-group

(
	...: any
)
Signal1:Fire("Hello World!")

:::

:DeferFire

Fire the signal (Deferred)

::: code-group

(
	...: any
)
Signal1:Fire("Hello World!")

:::

::: warning This uses pcall, which means it never error (safe-mode, sacrificed debugging), But gains performance here (upto 5x faster). :::

:FireTo

Fire to other signal, this uses :Fire.

::: code-group

(
    signal: string,
	...: any
)
Signals.Signal1:FireTo("Signal2", "Hello World!")

:::

::: warning This requires key. :::

:Invoke

::: code-group

(
    key: string,
	...: any
) -> (...any)
local connection = Signal1:Conenct(function(...) return "hey!" end)
local Request = Signal1:Invoke(connection, "Hello World!")

:::

:InvokeTo

this use :Invoke.

::: code-group

(
    signal: string,
    key: string,
	...: any
) -> (...any)
local connection2 = Signals.Signal2:Conenct(function(...) return "hey!" end)
local Request = Signals.Signal1:Invoke("Signal2", connection2, "Hello World!")

:::

::: warning This requires key. :::

:Wait

Wait the signal get triggered.

Signal1:Wait() -- return number (time)

::: warning This function is yielded :::

:Destroy

Disconnect all connection of signal and remove the signal from Signals

Signal1:Destroy()