Tôi thường muốn kích hoạt một chức năng nhất định chỉ một lần, nhưng tôi cần phải kích hoạt nó từ bên trong một hàm khác được gọi lặp đi lặp lại. Ví dụ, chụp một cái gì đó để sử dụng sau này. Tôi thường làm điều đó bằng cách thiết lập một boolean toàn cầu.Làm thế nào để kích hoạt một chức năng một lần, và chỉ một lần ...?
Tôi tự hỏi liệu cách tôi thực hiện nó có thực sự là cách tốt nhất không?
Tôi dường như nhớ lại rằng các biến toàn cầu là xấu, và các biến boolean toàn cầu thậm chí còn tồi tệ hơn!
Dù sao, đây là cách tôi thường thực hiện kích hoạt một phương pháp nhất định chỉ một lần:
Trong thiết lập ban đầu của tôi về biến ...
private var myStatus:Boolean = false;
Sau đó, trong phạm vi chức năng đó được gọi là thường .. .
if (!myStatus) {
doMyFunction();
myStatus = true;
}
có vẻ như khá logic với tôi, nhưng nó điều đúng đắn?
CẬP NHẬT: Vâng, dựa trên những gì tôi đã học được từ câu trả lời của bạn, trước tiên hãy kiểm tra xem nút XML có tồn tại hay không. đĩa xảy ra), và, nếu không, sau đó tôi nối thêm một nút mới với dữ liệu ảnh được mã hóa base64. Tôi vẫn đặt cờ boolean để sau này tôi có thể ghi đè hình ảnh trống với dữ liệu hình ảnh đã chỉnh sửa của người dùng nếu cần. Nó hoạt động hoàn hảo. Cảm ơn mọi sự giúp đỡ của bạn!
Tôi cũng cảm thấy thoải mái hơn khi sử dụng hệ thống cụ thể (không an toàn) trong một số trường hợp nhất định.
Nhưng nếu hàm trả về kết quả của một câu lệnh case, và bạn muốn một trong các câu lệnh case để có thể chạy một hàm chỉ lần đầu tiên nó được trả lại? Hay tôi vẫn chưa nhận được nó? – defmeta
@defmeta: Tôi nghĩ anh ấy có nghĩa là xem xét lý do tại sao bạn chỉ chạy mã một lần. Nếu nó là để thiết lập, có thể bạn có thể đơn giản hóa bằng cách di chuyển các thiết lập ra một giai đoạn trước đó. Nếu bạn đang lưu vào bộ nhớ đệm một kết quả đắt tiền mà có thể không bao giờ cần thiết, thì chắc chắn, hãy tiếp tục và làm điều đó khi sử dụng lần đầu tiên. –
@defmeta: onebyone là đúng - có thể bạn có thể cụ thể hơn một chút về chức năng chạy một lần của bạn cần làm gì? Có tác dụng phụ nào khi gọi chức năng này không? Điều gì xảy ra nếu bạn gọi nó hai lần? – rojoca