今、こちらのサイトの 同期と非同期の混在の問題
を読んでいます。
そこでこのようなことが書いてありました。
javascript
1function onReady(fn) { 2 var readyState = document.readyState; 3 if (readyState === 'interactive' || readyState === 'complete') { 4 fn(); 5 } else { 6 window.addEventListener('DOMContentLoaded', fn); 7 } 8} 9onReady(function () { 10 console.log('DOM fully loaded and parsed'); 11}); 12console.log('==Starting==');
DOMが読み込み済みかどうかで、 コールバック関数が同期的か非同期的に呼び出されるのかが異なっています。
onReadyを呼ぶ前にDOMの読み込みが完了している
同期的にコールバック関数が呼ばれる
onReadyを呼ぶ前にDOMの読み込みが完了していない
DOMContentLoaded のイベントハンドラとしてコールバック関数を設定する
そのため、このコードは配置する場所によって、 コンソールに出てくるメッセージの順番が変わってしまいます。
ですが、実際どのようにしてもコンソールに出てくるメッセージの順番が変わってしまう状況というのを作り出すことが出来ませんでした。どのようなときに順番が変わるのか出来ればコードなどを教えていただけないでしょうか・・・?
よろしくお願いします。
追記
試したこと1
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <script defer src="test.js"></script> </head> <body> </body> </html>
試したこと2
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <script src="test.js"></script> </head> <body> </body> </html>
回答2件
あなたの回答
tips
プレビュー