2021-01-19 09:20:52 +00:00
---
module: [kind=event] task_complete
see: commands.execAsync To run a command which fires a task_complete event.
---
2023-03-15 21:52:13 +00:00
<!--
SPDX-FileCopyrightText: 2021 The CC: Tweaked Developers
Further licensing work
- Fix several inaccuracies with several files not marking Dan's
authorship. Most of these are new files, where the code was moved from
somewhere else:
- In the public API: IDynamicLuaObject, ILuaAPI, TaskCallbakc,
IDynamicPeripheral, UpgradeBase
- In the ROM: fs, http, require
- Do not mark Dan as an author for entirely new code. This affects
DetailHelpers, DropConsumer, FluidData, InventoryMethods, ItemDetails,
MonitorRenderState, NoTermComputerScreen, Palette, PlatformHelperImpl,
UploadFileMessage, the Terminal tests, and any speaker-related files.
- Relicence many files under the MPL where we have permission to do
so. See #1339 for further details.
Thank you to everyone who has contributed so far! Cannot overstate how
appreciated it is <3.
2023-03-29 21:48:57 +00:00
SPDX-License-Identifier: MPL-2.0
2023-03-15 21:52:13 +00:00
-->
2023-08-24 09:48:30 +00:00
The [`task_complete`] event is fired when an asynchronous task completes. This is usually handled inside the function call that queued the task; however, functions such as [`commands.execAsync`] return immediately so the user can wait for completion.
2021-01-19 09:20:52 +00:00
## Return Values
2023-08-24 09:48:30 +00:00
1. [`string`]: The event name.
2. [`number`]: The ID of the task that completed.
3. [`boolean`]: Whether the command succeeded.
4. [`string`]: If the command failed, an error message explaining the failure. (This is not present if the command succeeded.)
2023-01-17 21:17:47 +00:00
5. < abbr title = "Variable number of arguments" > … </ abbr > : Any parameters returned from the command.
2021-01-19 09:20:52 +00:00
## Example
Prints the results of an asynchronous command:
```lua
local taskID = commands.execAsync("say Hello")
local event
repeat
event = {os.pullEvent("task_complete")}
until event[2] == taskID
if event[3] == true then
print("Task " .. event[2] .. " succeeded:", table.unpack(event, 4))
else
print("Task " .. event[2] .. " failed: " .. event[4])
end
```