Service Worker から一連の PUT & POST リクエストを送信する必要があります。それらが送信される順序が重要です。
要件:
- リクエスト メソッド、URL、および JSON 本文を指定して、リクエストを送信します
- 成功した場合 (
response.status < 300
):- body を success 関数に渡す
- キュー内の次のリクエストを呼び出す
- 失敗した場合:
- responseText または err をエラー関数に渡す
- 実行を停止
単純にキューを繰り返し処理し、fetch
リクエストごとに呼び出すと、ネットワークの差異によって (多くの場合) リクエストがサーバーに順不同で到着する可能性があります。
fetch
各結果が前の結果に依存する一連の要求を作成するにはどうすればよいですか?
私が試したこと:
- 代わりに XHR を使用します (「async: false」を使用できると仮定しますが、これは Service Worker では許可されていません)。
setTimeout(sendRequest, i*200)
. ハック、信頼できません。Promise loops
これらの例ES6 Promise Patternsに基づいています。これは最も有望に思えましたが、例は成功を想定した単純なケースです。フェッチで動作させることはできません。
コンテキスト: API リクエストの「アウトボックス」を使用して、オフラインでのデータの読み取り、作成、および更新をサポートしています。この順序の問題を除いて、うまく機能します。