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().

Масалан бо Task дар Swift Concurrency:

let task = Task {
    for i in 1...10 {
        try Task.checkCancellation() // Санҷиши бекоркунӣ
        print(i)
        try await Task.sleep(nanoseconds: 1_000_000_000)
    }
}

// Баъдтар, барои бекор кардан:
task.cancel()

Муҳим аст, ки дар дохили амалиёти асинхронӣ санҷиши бекоркунӣ амалӣ карда шавад, вагарна амалиёт идома хоҳад ёфт.