ในโพสต์นี้ เราจะมาดูกันว่าคุณสามารถชะลอการเรียกเมธอดโดยใช้ Swift ได้อย่างไร ต่อไปนี้เราจะมาดูกันว่าคุณจะประสบความสำเร็จได้อย่างไรในสองวิธี
มาเริ่มกันเลย
เราจะเห็นทั้งสองตัวอย่างใน Playground
ขั้นตอนที่ 1 - เปิด Xcode →สนามเด็กเล่นใหม่
ในแนวทางแรก เราจะใช้วิธีอินสแตนซ์ asyncAfter(deadline:execute:) ซึ่งจัดกำหนดการรายการงานสำหรับการดำเนินการตามเวลาที่กำหนดและส่งคืนทันที
คุณสามารถอ่านเพิ่มเติมได้ที่นี่ https://developer.apple.com/documentation/dispatch/dispatchqueue/2300020-asyncafter
ขั้นตอนที่ 2 - คัดลอกโค้ดด้านล่างใน Playground แล้วเรียกใช้
func functionOne() { let delayTime = DispatchTime.now() + 3.0 print("one") DispatchQueue.main.asyncAfter(deadline: delayTime, execute: { hello() }) } func hello() { print("text") } functionOne()
ที่นี่เรากำลังสร้างฟังก์ชันหนึ่งฟังก์ชันหนึ่ง โดยที่แรกเราจะประกาศเวลาหน่วงเวลาซึ่งก็คือ 3 วินาที จากนั้น เรากำลังใช้ asyncAfter โดยที่เรากำหนดให้เวลาหน่วงเป็นพารามิเตอร์ และขอให้เรียกใช้ฟังก์ชัน hello() หลังจากผ่านไป 3 วินาที
หากเราเรียกใช้โปรแกรมข้างต้น พิมพ์ "หนึ่ง" ก่อน จากนั้น "ข้อความ" จะพิมพ์หลังจาก 3 วินาที
ในแนวทางที่สอง เราจะใช้ NSTimer
คุณสามารถคัดลอกโค้ดด้านล่างในแอปพลิเคชัน Xcode→Single View
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print("one") Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(ViewController.hello), userInfo: nil, repeats: false) } @objc func hello() { print("text") } }
เรียกใช้แอปพลิเคชัน คุณจะเห็นผลลัพธ์เดียวกัน พิมพ์หนึ่งรายการ และพิมพ์ข้อความหลังจาก 3 วินาที