Gibt es eine Möglichkeit, Alamofire-Anfragen mit Wiederholungen auszuführen?

8

Ich habe viele Stellen im Code, an denen Alamofire-Anfragen / -Antworten bearbeitet werden.

Jede dieser Anfragen kann aufgrund eines zeitweiligen Problems fehlschlagen (das häufigste ist ein flockiges Netzwerk).

Ich möchte in der Lage sein, Anfragen dreimal zu wiederholen, bevor ich freikomme.

Die einfache Methode wäre, so etwas zu haben

%Vor%

Allerdings mag ich diesen Ansatz aus mehreren Gründen nicht. Am offensichtlichsten ist, dass ich einen solchen Code für jeden Anforderungstyp implementieren muss (und ich habe ungefähr 15 davon).

Ich bin neugierig, ob es so etwas gibt (wo die Änderungen minimal und nicht aufdringlich sind)

%Vor%     
Victor Ronin 24.05.2016, 19:47
quelle

4 Antworten

3

Eines der Bits von syntaktischem Zucker, die du mit Swift bekommst, kannst du verwenden:

%Vor%

So:

%Vor%

Beachten Sie, dass der Block außerhalb der Funktion () der Funktion updateEvents liegt, anders als normalerweise erwartet. Es funktioniert nur, wenn der Block das Letzte in der Deklaration der Funktion ist.

Das bedeutet, wenn Sie einen Block wie Ihre Alamofire-Anfrage haben, können Sie ihn effektiv mit Ihrer Wiederholungsfunktion einbinden. Ein etwas komplizierteres Problem ist, dass Sie einen Block innerhalb des Blocks aufrufen möchten. Keine große Sache:

%Vor%

Und du benutzt es so:

%Vor%

Das bedeutet, dass Sie nur Ihre Alamofire-Anrufe finden und sie in {} einschließen und vorher retryWrapper () setzen müssen. Die Wiederholungslogik selbst ist nur einmal vorhanden.

    
Carlos 24.05.2016, 22:41
quelle
11

Alamofire 4.0 hat ein RequestRetrier -Protokoll, das Sie verwenden können.

Ссылка

Beispiel:

%Vor%     
iwasrobbed 09.05.2017 17:31
quelle
1

Ich hatte das gleiche Problem, habe die Requests mit RequestRetrier, should method und request.retryCount erneut versucht. So etwas wie: "     // MARK: - RequestRetry

%Vor%     
Carla Camargo 19.12.2017 13:25
quelle
-3

Nun, was ich getan habe, ist folgendes, wenn die Anfrage fehlschlägt, sende ich eine fehlgeschlagene Benachrichtigung an denjenigen, der die Anfrage gemacht hat. Dann ist es dafür verantwortlich, die Anfrage erneut zu versuchen. Fand das viel einfacher.

%Vor%     
MNassar 02.08.2016 12:49
quelle

Tags und Links