すべてのプロダクト
Search
ドキュメントセンター

:waitUntil操作に関するFAQ

最終更新日:Mar 11, 2024

このトピックでは、EdgeRoutine (ER) のwaitUntilメソッドに関するよくある質問に対する回答を提供します。

フェッチ要求が時々失敗するのはなぜですか?

次の原因により、フェッチリクエストが失敗することがあります。

  • コンテキストのライフサイクル

    addEventListenerメソッドを呼び出してコールバック関数を登録すると、コンテキストが自動的に作成されます。 event.respondWithメソッドによって返されたレスポンスヘッダーと本文を含むResponseオブジェクトが読み取られた後、コンテキストが閉じます。

    すべての非同期関数のライフサイクルは、コンテキストのライフサイクルに含まれます。 非同期関数は、オブジェクトが解決されるまでPromiseオブジェクトの実行を待ちます。 非同期関数がPromiseオブジェクトの実行を待機しないようにする場合は、event.waitUntilメソッドを呼び出します。 このメソッドは、waitUntilメソッドに渡されたすべてのPromiseオブジェクトが実行されるまで、コンテキストのライフサイクルを拡張します。

  • コンテキスト間の共有状態

    コンテキスト間で状態を共有することはできません。 標準のJavaScript構造にないデータは、コンテキスト間で共有できません。 たとえば、Service Worker APIやStreamオブジェクトの構造内のデータをコンテキスト間で共有することはできません。 コンテキストAがコンテキストAに属さないオブジェクトを使用する場合、ERはオブジェクトを検出し、例外をスローします。

    説明

    状態を共有するには、String、Array、Object、NumberなどのネイティブJavaScriptオブジェクト、またはカスタムクラスを使用できます。

  • Concurrent Promiseオブジェクト

    関数が待機していないPromiseオブジェクトは同時実行です。 ERがサブリクエストを待機するのではなく、リクエストを受信した直後にERがブラウザーに応答する場合は、waitUntilメソッドを呼び出して、プログラムが期待どおりに実行されるようにします。

  • 非同期関数によってスローされる例外

    waitUntilステートメントのサブリクエストが例外をスローした場合、コンテキストは終了します。

waitUntilメソッドを複数回呼び出すことはできますか?

waitUntilメソッドを複数回呼び出すことも、waitUntilメソッドを別のwaitUntilメソッド内にネストすることもできます。 このようにして、waitUntilメソッドのいずれかによって返されるPromiseオブジェクトが解決され、コールバック関数でwaitUntilメソッドを引き続き呼び出すことができます。

説明

コンテキストは、特定の応答時間を有する。 応答がタイムアウトした場合、コンテキストは終了します。