Ich habe mehrere Funktionen, die auf Remote-Ressource angewiesen sind, um ein Ergebnis zurückzugeben. Diese Remote-Ressource hat viele Fehler oder unerwartete Reaktionen, die ich nicht ändern kann. Es gibt eine Reihe von Funktionen, die jeweils von den Ergebnissen der vorherigen Funktion abhängen. Die Logik jeder Funktion ist unterschiedlich.Umgang mit der Abfolge von abhängigen Funktionen
Zum Beispiel:
bool remoteFunction(string resource, string parameter = "")
{
// for example request
//for simplicity this is considered a request, but each function has different logic
return request.Url("example.com" + resource, parameter);
}
var firstResult = remoteFunction("a"); //1st step
var secondResult = remoteFunction("b", firstResult); //2nd step
var thirdResult = remoteFunction("c", secondResult); //3rd step
var fourthResult = remoteFunction("d", thirdResult); //4rth steo
Was möchte ich tun, ist:
- Halten Sie erneut versuchen, die Funktion zu tun, bis sie das Ergebnis zurückgeben wir wollen. Dies kann innerhalb oder außerhalb der Funktion erfolgen.
- Ich möchte in der Lage von einer Funktion auf eine vorherige zurückspringen und weiter durch den Fluss. h.: Sprung vom 4. zum 2. Schritt und weiter von dort.
Was ist der beste Entwurf, um dies zu tun?
Danke für die Hilfe
Klarstellung: mehr klar sein, ich will nur in der Sequenz zurück gehen nur, wenn eine Funktion eine Ausnahme auslöst. d. h.: Wenn die vierte Funktion eine Ausnahme auslöst, muss ich zurück zur 1 gehen und von dort weitermachen.
Es gibt nie ein bestes Design. Zu welchen Ideen bist du bisher gekommen? –
Um zu tun, was Sie wollen, müssen Sie jede Funktion asynchron ausführen. Dann müssen Sie in der Lage sein, eine Funktion zum Ausführen auszuwählen. Die Auswahl könnte erfolgen, indem der Code in einen Schaltblock gesetzt wird, wobei jede Funktion einen anderen Fall hat. – jdweng
@jdweng diese Funktionen müssen nacheinander ausgeführt werden. – circler