Alamofire, jak se zachovat požadavek, aby?

0

Otázka

já jsem pomocí jediné sériové fronty jako rootQueue / žádost / serializace fronty

let queue = DispatchQueue(label: "APIManager.rootQueue")
a.session = Session(configuration: sessionConfiguration,
                    delegate: a,
                    rootQueue: queue,
                    startRequestsImmediately: true,
                    requestQueue: queue,
                    serializationQueue: queue,
                    interceptor: nil,
                    serverTrustManager: nil,
                    redirectHandler: nil,
                    cachedResponseHandler: nil,
                    eventMonitors: [])

nicméně žádostí se zdá být dokončena v náhodném pořadí tak, aby pořadí, v jakém byly vytvořeny

Compleations tisk do konzole:

[2][Request]: GET https://...
[1][Request]: GET https://...
[4][Request]: GET https://...
[3][Request]: GET https://...
[5][Request]: GET https://...

číslo v [] představují vytvoření objednávky PS: pořadí je také chyba během serializace

fronta je sériový, ale výsledek vypadá jako z souběžných

jak se zachovat FIFO pořadí žádostí a výsledky

1

Nejlepší odpověď

0

Pokud chcete, aby se požadavky v pořadí, spíše než souběžně můžete:

  1. Hnízdo je. Start další požadavek uvnitř dokončení handler z předchozí žádosti.
  2. Zábal Alamofire žádosti v Operations a nastavit závislosti mezi operace, které se provádějí v pořadí, které chcete.
  3. Použití Alamofire je Kombinovat integrace publikovat první žádost odpověď, pak flatMap v další žádost.
  4. Použití Swift je nový souběžnosti funkce zabalit Alamofire dokončení obslužné rutiny, takže můžete použít async-await syntaxe. To bude podpořeno Alamofire přímo v nadcházející verzi.

Nakonec, pravděpodobně budete chtít přehodnotit, zda FIFO je to, co opravdu chcete, nebo zda je možné postavit systém, který se nestará, pokud jsou žádosti kompletní. Takový systém bude pravděpodobně jednodušší spravovat, jak odstranit závislosti mezi požadavky, a vyšší výkon, jak odstranit čekání nezbytné zajistit požadavky jsou ve správném pořadí.

2021-11-16 21:41:01

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................