リモートリソースに依存して結果を返す関数がいくつかあります。 このリモートリソースには、私が変更できない多くのエラーや予期しない応答があります。 以前は関数の結果に依存する一連の関数があります。 各機能のロジックが異なります。例えば従属関数のシーケンスを扱う
:私は何をしたいか
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
は次のようになります。それは私たちが望む結果を返すまで
- は、機能を実行するために再試行してください。 これは、関数の内部または外部で行うことができます。
- 私は の機能から前の機能に戻ることができるようにして、 フローを続けます。すなわち4番目のステップから2番目のステップにジャンプし、 に続きます。
これを行うには最適なデザインは何ですか?助けのための
おかげで
明確化: をより明確にするために、私は唯一の関数が例外をスローした場合にのみ、バックの順序で行ってみたいです。すなわち、 4rd関数が例外をスローすると、最初に戻り、そこから続行する必要があります。
最高のデザインは決してありません。これまでのアイデアは何ですか? –
各機能を非同期で実行するために必要な操作を実行するには次に、実行する関数を1つ選択できる必要があります。この選択は、コードをスイッチブロックに入れて、各機能が異なる場合に行うことができます。 – jdweng
@jdwengこれらの関数は順番に実行する必要があります。 – circler