PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience

BindableEvent Theading Behavior

BindableEvent Theading Behavior

Oct 01 2018, 2:55 AM PST

This code sample demonstrates how BindableEvents, like all Events, create threads of each connected function. Even if one errors, like ohNo does, the others continue. In addition, this sample shows how functions connected to the event can yield without blocking the thread that fired the event.

Test this code by pasting it into a Script within a BindableEvent parented to the Workspace or ServerScriptService. When running it, you’ll notice the error by ohNo does not stop the script from continuing (“Let’s-a-go!”) or any other connected function from being called. count and alphabet both do their tasks at the same time.

local be = script.Parent

-- Print numbers 1 through `n`
local function count(n)
	for i = 1, n do
		wait(.25)
		print(i)
	end
end

-- Print the first `n` letters of the alphabet
local function alphabet(n)
	for i = 0, n-1 do
		wait(.333)
		print(string.char(65+i))
	end
end

-- This function errors! But it doesn't stop
-- the others from being called
local function ohNo(n)
	if n > 10 then
		error("Oh no!")
	end
end

be.Event:Connect(count)
be.Event:Connect(alphabet)
be.Event:Connect(ohNo)
be:Fire(26)
print("Let's-a-go!")