Sobes.tech
Junior — Middle

Ինչպե՞ս կարելի է ընդհատել ասինխրոնային օպերացիայի կատարմանը։

sobes.tech AI

Պատասխան AI-ից

iOS-ում սովորաբար օգտագործվում են հետևյալ մոտեցումները՝

  1. URLSession-ի առաջադրանքի չեղարկում — եթե ասինխրոնային գործողությունը կապված է ցանցային հարցման հետ, կարող եք կանչել cancel() մեթոդը URLSessionTask օբյեկտի վրա:

  2. DispatchWorkItem-ի օգտագործում — GCD-ով աշխատելիս կարող եք ստեղծել DispatchWorkItem և կանչել cancel(), որպեսզի փորձեք ընդհատել կատարմանը:

  3. Combine և Swift Concurrency — Combine-ում կարող եք չեղարկել բաժանորդագրությունը (AnyCancellable), իսկ Swift Concurrency-ում (async/await) — օգտագործել Task և կանչել cancel():

Swift Concurrency-ում Task-ի օրինակ՝

let task = Task {
    for i in 1...10 {
        try Task.checkCancellation() // Չեղարկման ստուգում
        print(i)
        try await Task.sleep(nanoseconds: 1_000_000_000)
    }
}

// Հետագայում, չեղարկելու համար՝
task.cancel()

Կարևոր է, որ ասինխրոնային գործողության մեջ իրականացվի չեղարկման ստուգում, հակառակ դեպքում գործողությունը կշարունակվի։