質問: 0の場合でも404を返すまで、その時点でyの最大値に達したことがわかります。これは、テンプレートのみのダウンロード用に実装できる状態マシンで作成した簡単なスキーマです。 問題は、次のような方法でソフトウェアを構築する方法です。 すべてのタイルurlが事前にわかっている場合、テンプレートのみのダウンロードと従来のデズーマーの両方を許可します。 効率的です(常にできるだけ多くのタイルを並行してダウンロードします) テスト可能です コードの重複を回避
回答: これはトリックを実行するアルゴリズムのスケッチです-救助のための機能ツール: urlのリストではなく、urlのstream(またはgenerator)の観点からコアダウンローダーを実装します(javascriptまたはrust自分だけで、他のいくつかの言語でのみですが、両方の言語がこれらの概念をサポートするという情報がwebで見つかりました)。 ダウンローダーは、並列ダウンロードキューを最大n個の要素で満たします。nは、許可される同時ダウンロードの最大数です。このような実装は、「有限」ストリームと「無限」ストリーム(遅延ジェネレーター関数に基づく)で機能する必要があることに注意してください。 404を取得すると、追加の停止基準として機能します。 ダウンロードされた画像は、「スティッチャー」に渡すために、非同期イベント(またはコールバック関数)を介して返される必要があります。このメカニズムは、ダウンロードの失敗について発信者に通知するためにも使用できます。 これで、従来のダウンローダーだけでなく、テンプレートのみのダウンロードでも再利用できます。最初のものは明白であるべきです。 2番目の方法は、上記でスケッチした2ステップの方法で正確に機能しますが、これは、ストリーム用に生成されたurlの順序を表す点が異なります。 最初に、タイルの「無限」ストリーム(1,1)、(2,1)、(3,1)などから始めて、xの制限を見つけ、最初の行をダウンロードします 次に、(1,2)、(2,2)、...、(maxx、2)、(1,3)、(2,3)、...のurlを「無限ストリーム」として提供します"、ダウンロードが停止するまで。 これが要件1、2、4を満たしていることは明らかです。要件#3は、ここでのアルゴリズムと完全に直交しており、ダウンロード機能を一部の「モック」ダウンロード機能。これが十分に明確であるといいのですが、そうでない場合でも、遠慮なく質問してください。