Gibt den gleichen Wert für mehrere Funktionsaufrufe zurück, während eine Anfrage mit async / await fortfährt

8

Gegeben die folgende Funktion:

%Vor%

Ich möchte das erreichen. Die Funktion GetValue () kann von verschiedenen Teilen des Programms aufgerufen werden. Während GetValueFromServer () ausgeführt wird, möchte ich keinen weiteren Aufruf starten. Alle Aufrufe von GetValue (), während GetValueFromServer () ausgeführt wird, sollten denselben Wert zurückgeben und keinen weiteren Aufruf initiieren. Ein Aufruf von GetValue (), während GetValueFromServer () nicht ausgeführt wird, sollte einen neuen Aufruf von GetValueFromServer () auslösen.

Ein Beispiel:

%Vor%

Die Aufrufe von GetValue () bei 0.0, 0.3 und 0.6 sollten nur einen einzelnen Aufruf von GetValueFromServer () auslösen. Alle drei Anrufer sollten den gleichen Wert erhalten. Der Aufruf von GetValue () bei 0.9 sollte einen weiteren Aufruf von GetValueFromServer () auslösen.

Ich bin immer noch bei Objective-C fest und denke, wo ich Blöcke dafür verwenden würde. Ich würde die Blöcke anordnen und wenn die Anforderung an den Server zurückgibt, jeden Block aufrufen, der in die Warteschlange gestellt wurde.

%Vor%

Nun möchte ich dasselbe erreichen, aber das async / await-Muster verwenden. Dies ist für den Einsatz in einer Windows Phone 8.1 (RT) -App und wenn möglich möchte ich eine Drittanbieter-Bibliothek / Framework zu vermeiden.

    
Robert Höglund 17.04.2015, 07:26
quelle

1 Antwort

8

Sie müssen dieselbe Aufgabe teilen, um den gleichen Wert zurückzugeben (Sie müssen den Status teilen). Um dies zu tun, müssen Sie den Zugriff synchronisieren.

Folgendes sollte mehr als genug sein.

%Vor%     
Sriram Sakthivel 17.04.2015, 07:40
quelle

Tags und Links