Sobes.tech
Junior

Чӣ гуна вазифаи асинхронӣ аст?

sobes.tech AI

Ҷавоб аз AI

Вазифаи асинхронӣ — ин амалияест, ки дар пасзамина иҷро мешавад, бидуни бастани сӯрохи асосии иҷрои барнома. Ин имкон медиҳад, ки интерфейси корбар дар вақти иҷрои амалҳои дарозмуддат, мисли дархостҳои шабакавӣ, кор бо файлҳо ё ҳисобҳои мураккаб, ҷавобгӯ боқӣ монад.

Ҳангоми иҷрои вазифаи асинхронӣ, сӯрохи асосӣ онро оғоз мекунад ва сипас кори худро идома медиҳад, бидуни интизорӣ барои анҷоми он. Вақте ки вазифаи асинхронӣ ба охир мерасад, одатан, он ба сӯрохи асосӣ хабар медиҳад, ки метавонад натиҷа ё хатоҳоро коркард кунад.

Дар Swift, механизмҳои гуногун барои кор бо вазифаҳои асинхронӣ истифода мешаванд:

  • GCD (Grand Central Dispatch): API-и пасти сатҳ барои идоракунии сӯрохиҳо ва навбатҳо.
  • Operation Queues: Абстраксияи сатҳи баландтар дар болои GCD, ки имкон медиҳад, ки вобастагиҳоро байни вазифаҳо боэътимодтар идора кардан мумкин аст.
  • async/await: Шакли синтаксис барои кор бо кодҳои асинхронӣ, ки дар Swift 5.5 ворид шудааст.

Масалан барои истифодаи async/await:

// Тартиби муайян кардани функсияи асинхронӣ
func fetchData() async throws -> Data {
    // Имитацияи дархости шабакавӣ
    try await Task.sleep(nanoseconds: 2_000_000_000) // Тамом кардани 2 сония
    print("Маълумот бор карда шуд")
    return Data()
}

// Даъват кардани функсияи асинхронӣ дар контексти вазифаи асинхронӣ
Task {
    do {
        let data = try await fetchData()
        print("Коркарди маълумоти гирифташуда")
    } catch {
        print("Хатои боркунии маълумот: \(error)")
    }
}

// Қисми боқимондаи коди сӯрохи асосӣ фавран идома мекунад
print("Сӯрохи асосӣ идома дорад")

Мушаххасоти асосии вазифаҳои асинхронӣ:

  • Иҷрои беистироҳат: Сӯрохи асосӣ интизор намешавад, ки вазифа ба охир расад.
  • UI ҷавобгӯ: Барнома дар ҳолати интерактивӣ мемонад.
  • Идоракунии анҷом: Механизми барои коркарди натиҷа ё хато пас аз анҷоми вазифа бояд пешбинӣ шавад.

Истифодаи дуруст аз вазифаҳои асинхронӣ барои сохтани барномаҳои iOS мулоим ва бо иҷрои баланд муҳим аст.