私はpolyfillを使ってPromiseを呼び出し、古いクライアントをフェッチします。私たちは、非同期の使用を推奨してポリフィルサービスからロード タグの属性を延期私のpolyfillやその他のスクリプトの設定は、それらが順番に読み込まれることを保証しますか?
:their website彼らは、スクリプトが現代のコードを実行する前に完全にロードされたことを確認するスクリプト・ローダまたはそのコールバックを使用することをお勧めします ノンブロッキングウェイでロードすると、ポリフィルのロードが完了する前または後に、自分の コードが実行されるかどうかがわからないことを意味します。
あなた自身 のコードを実行しようとする前にpolyfillsが存在していることを確認するために、あなたはより洗練されたスクリプト・ローダを使用し、https://cdn.polyfill.io スクリプトタグにonloadイベントハンドラを添付したり、単純に評価するために、私たちの コールバック引数を使用することができますすでに彼らはまだブラウザが「doesnのない限り、彼らは(文書に表示される順序で非同期ロードされていることを保証
しかし、両方のスクリプトでdefer
を設定しないでください。polyfillsは がロードされているグローバルコールバックサポートを延期する)?
<script src="https://cdn.polyfill.io/v2/polyfill.min.js" defer></script>
<script src="modernscript.js" defer></script>
もしあなたがこの回答を見ると、https://stackoverflow.com/a/32413657/5918874で、人々は実行の順序を保証すると信じているようです。またここに:https://www.sitepoint.com/non-blocking-async-defer/。私はpolyfill.ioドキュメントを正確に言及しました。なぜなら、それらが反対であると述べているからです(しかし、それは非同期と組み合わせた遅延についても言います)。そして、mozillaのドキュメントはそれについて何も言わない。それは変だ。 – vsjn3290ckjnaoij2jikndckjb
これはおそらく私の間違いです:通常のスクリプトの読み込みプロセスは動作をブロックしています。 'async'スクリプトは非同期で読み込まれます。' defer'スクリプトは読み込みを開始する時点が異なる時点を定義しているようです。 polyfill.io docsは 'async'と' defer'属性の両方を追加することを提案しています。そのため、彼らは 'onload'ハンドラを追加することを提案しています。私は混乱を避けるために私の答えを取り除きます。 – Flying
コメントの情報を含めるように回答を更新することにしました。スペックには明確な振る舞い定義がないので、そのようなタイプの負荷に頼るのを避け、代わりに他の選択肢を検討する方が良いでしょう。 – Flying