Junior
რა არის სინქრონული და ასინქრონული მოთხოვნების განსხვავება?
sobes.tech AI
პასუხი AI-სგან
සංක්රිය ඉල්ලීම් වර්තමාන ක්රියාත්මක නාලිකාව බ්ලොක් කරයි පිළිතුරු ලැබෙන තුරු. අසංක්රිය ඉල්ලීම් නාලිකාව බ්ලොක් නොකරයි; පිළිතුර ක්රියාවලිය අවසන් වීමෙන් පසුව, සාමාන්යයෙන් callback, delegate හෝ closure යන යන්ත්රණය මඟින් සැලසෙයි.
| ලක්ෂණය | සංක්රිය ඉල්ලීම | අසංක්රිය ඉල්ලීම |
|---|---|---|
| නාලිකාව බ්ලොක් කිරීම | ඔව් | නැත |
| UI-ප්රතික්රියාව | UI බ්ලොක් කළ හැකියි | UI බ්ලොක් නොකරයි |
| ක්රියාවලිය සංකීර්ණතාව | සරලයි | වැඩි සංකීර්ණ (අවස්ථා කළමනාකරණය) |
| iOS භාවිතය | අඩු, කෙටි කාර්යයන් සඳහා පමණක්, මූලික නාලිකාවේ නොවේ | කැමති, විශේෂයෙන් දිගු මෙහෙයුම් සඳහා |
URLSession භාවිතා කර අසංක්රිය ඉල්ලීමේ උදාහරණයක්:
// URLSessionTask නිර්මාණය
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// මෙම බ්ලොක්කය අසංක්රියව ක්රියාත්මක වේ ඉල්ලීම අවසන් වූ පසු
if let error = error {
print("දෝෂය: \(error.localizedDescription)")
return
}
// ලැබුණු දත්ත සැකසීම
if let data = data {
print("දත්ත ලැබී ඇත, බයිට්: \(data.count)")
}
// UI යාවත්කාලීන කිරීම මූලික නාලිකාවේ සිදු කළ යුතුය
DispatchQueue.main.async {
// UI යාවත්කාලීන කිරීම
}
}
// කාර්යය ආරම්භ කිරීම
task.resume()
// මෙහි කේතය තත්පරිකව ක්රියාත්මක වේ, ඉල්ලීම අවසන් වීමක් බලාපොරොත්තු නොවී
print("ඉල්ලීම යොමු කරන ලදි")