खोज…


परिचय

वस्तुतः सभी एप्लिकेशन मुख्य धागे को अवरुद्ध करने से कोड को रखने के लिए अतुल्यकालिक कार्यों का उपयोग कर रहे हैं।

कोई इनपुट तर्क के साथ समापन हैंडलर

func sampleWithCompletion(completion:@escaping (()-> ())){
    let delayInSeconds = 1.0
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) {
        
        completion()
        
    }
}

//Call the function
sampleWithCompletion {
    print("after one second")
}

इनपुट तर्क के साथ समापन हैंडलर

enum ReadResult{
    case Successful
    case Failed
    case Pending
}

struct OutpuData {
    var data = Data()
    var result: ReadResult
    var error: Error?
}

func readData(from url: String, completion: @escaping (OutpuData) ->  Void) {
    var _data = OutpuData(data: Data(), result: .Pending, error: nil)
    DispatchQueue.global().async {
        let url=URL(string: url)
        do {
            let rawData = try Data(contentsOf: url!)
            _data.result = .Successful
            _data.data = rawData
            completion(_data)
        }
        catch let error {
            _data.result = .Failed
            _data.error = error
            completion(_data)
        }
        
    }
}

readData(from: "https://raw.githubusercontent.com/trev/bearcal/master/sample-data-large.json") { (output) in
    switch output.result {
    case .Successful:
        break
    case .Failed:
        break
    case .Pending:
        break
        
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow