Site icon AppTractor

Throttler: ограничение действий пользователя

Throttler — библиотека, которая ограничивает излишне повторяющиеся действия. Типичная проблема, которую может решить Throttler — пользователь много раз нажимает кнопку, которая запрашивает асинхронный сетевой вызов. Throttler в одну строчку кода ограничивает такие действия до одного нормального вызова.

Пример использования:

import UIKit

import Throttler

class ViewController: UIViewController {
    @IBOutlet var button: UIButton!
    
    var index = 0
    
    /********
    Assuming your users will tap the button, and 
    request asyncronous network call 10 times(maybe more?) in a row within very short time nonstop.
    *********/
    
    @IBAction func click(_ sender: Any) {
        print("click1!")
        
        Throttler.go {
        
            // Imaging this is a time-consuming and resource-heavy task that takes an unknown amount of time!
            
            let url = URL(string: "https://jsonplaceholder.typicode.com/todos/1")!
            let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
                guard let data = data else { return }
                self.index += 1
                print("click1 : \(self.index) :  \(String(data: data, encoding: .utf8)!)")
            }
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

GitHub: https://github.com/boraseoksoon/Throttler
Платформа: iOS
⭐️: 16

Exit mobile version