Chuyển tới nội dung chính

Đăng ký callback khi thoát (register_atexit)

Khai báo

original_callback = register_atexit(name, callback)

Tham số

  • name
    Chuỗi, bắt buộc. Mã định danh của callback được đăng ký; dùng lại cùng name sẽ thay thế callback hiện có.
  • callback
    Hàm, bắt buộc. Hàm sẽ chạy khi tập lệnh thoát; hãy giữ hàm gọn nhẹ và an toàn khi được gọi nhiều lần. Truyền nil để hủy đăng ký callback của name này.

Giá trị trả về

  • original_callback
    Hàm. Callback trước đó được đăng ký cùng tên. Trả về nil nếu chưa từng có callback; bạn có thể dùng giá trị này để khôi phục callback cũ khi cần.

Mô tả

Các callback đăng ký bằng register_atexit sẽ chạy khi tập lệnh thoát, kể cả khi người dùng dừng tập lệnh bằng nút âm lượng; chúng được thực thi trước khi Lua thu gom rác.
Thứ tự thực thi của các callback có tên khác nhau không được đảm bảo; nếu cần đúng thứ tự, hãy điều phối bên trong một callback duy nhất.
Giữ công việc trong callback thật ngắn để không làm chậm quá trình thoát.
Hàm này chỉ khả dụng từ phiên bản 20250705 trở đi.

Ví dụ

register_atexit("cleanup", function()
sys.toast("Dọn dẹp tài nguyên trước khi thoát")
sys.msleep(300)
end)

while true do
sys.toast("Hãy thử dừng tập lệnh bằng nút âm lượng\n" .. os.date("%Y-%m-%d %H:%M:%S"))
sys.msleep(1000)
end

Lưu ý: Sử dụng sys.toast, sys.msleep