Junior — Middle
Ինչպե՞ս կարելի է ընդհատել ասինխրոնային օպերացիայի կատարմանը։
sobes.tech AI
Պատասխան AI-ից
iOS-ում սովորաբար օգտագործվում են հետևյալ մոտեցումները՝
-
URLSession-ի առաջադրանքի չեղարկում — եթե ասինխրոնային գործողությունը կապված է ցանցային հարցման հետ, կարող եք կանչել
cancel()մեթոդըURLSessionTaskօբյեկտի վրա: -
DispatchWorkItem-ի օգտագործում — GCD-ով աշխատելիս կարող եք ստեղծելDispatchWorkItemև կանչելcancel(), որպեսզի փորձեք ընդհատել կատարմանը: -
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()
Կարևոր է, որ ասինխրոնային գործողության մեջ իրականացվի չեղարկման ստուգում, հակառակ դեպքում գործողությունը կշարունակվի։