ÐÑли JavaScript-кода много â его вÑноÑÑÑ Ð² оÑделÑнÑй Ñайл, коÑоÑÑй подклÑÑаеÑÑÑ Ð² HTML:
<script src="/path/to/script.js"></script>
ÐдеÑÑ /path/to/script.js â ÑÑо абÑолÑÑнÑй пÑÑÑ Ðº ÑайлÑ, ÑодеÑжаÑÐµÐ¼Ñ ÑкÑÐ¸Ð¿Ñ (из коÑÐ½Ñ ÑайÑа).
ÐÑаÑÐ·ÐµÑ Ñам ÑкаÑÐ°ÐµÑ ÑкÑÐ¸Ð¿Ñ Ð¸ вÑполниÑ.
Ðожно ÑказаÑÑ Ð¸ полнÑй URL, напÑимеÑ:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.js"></script>
ÐÑ Ñакже можеÑе иÑполÑзоваÑÑ Ð¿ÑÑÑ Ð¾ÑноÑиÑелÑно ÑекÑÑей ÑÑÑаниÑÑ. ÐапÑимеÑ, src="lodash.js" обознаÑÐ°ÐµÑ Ñайл из ÑекÑÑей диÑекÑоÑии.
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑ Ð½ÐµÑколÑко ÑкÑипÑов, иÑполÑзÑйÑе неÑколÑко Ñегов:
<script src="/js/script1.js"></script>
<script src="/js/script2.js"></script>
...
Ðак пÑавило, в HTML пиÑÑÑ ÑолÑко ÑамÑе пÑоÑÑÑе ÑкÑипÑÑ, а ÑложнÑе вÑноÑÑÑ Ð² оÑделÑнÑй Ñайл.
ÐÑаÑÐ·ÐµÑ ÑкаÑÐ°ÐµÑ ÐµÐ³Ð¾ ÑолÑко пеÑвÑй Ñаз и в далÑнейÑем, пÑи пÑавилÑной наÑÑÑойке ÑеÑвеÑа, бÑÐ´ÐµÑ Ð±ÑаÑÑ Ð¸Ð· Ñвоего кеÑа.
ÐлагодаÑÑ ÑÑÐ¾Ð¼Ñ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ болÑÑой ÑкÑипÑ, ÑодеÑжаÑий, к пÑимеÑÑ, библиоÑÐµÐºÑ ÑÑнкÑий, Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ð° ÑазнÑÑ ÑÑÑаниÑÐ°Ñ Ð±ÐµÐ· полной пеÑезагÑÑзки Ñ ÑеÑвеÑа.
src, Ñо ÑодеÑжимое Ñега игноÑиÑÑеÑÑÑ.Родном Ñеге SCRIPT нелÑÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменно подклÑÑиÑÑ Ð²Ð½ÐµÑний ÑкÑÐ¸Ð¿Ñ Ð¸ ÑказаÑÑ ÐºÐ¾Ð´.
ÐÐ¾Ñ Ñак не ÑÑабоÑаеÑ:
<script src="file.js">
alert(1); // Ñак как Ñказан src, Ñо внÑÑÑеннÑÑ ÑаÑÑÑ Ñега игноÑиÑÑеÑÑÑ
</script>
ÐÑжно вÑбÑаÑÑ: либо SCRIPT идÑÑ Ñ src, либо ÑодеÑÐ¶Ð¸Ñ ÐºÐ¾Ð´. Тег вÑÑе ÑледÑÐµÑ ÑазбиÑÑ Ð½Ð° два: один â Ñ src, дÑÑгой â Ñ ÐºÐ¾Ð´Ð¾Ð¼, Ð²Ð¾Ñ Ñак:
<script src="file.js"></script>
<script>
alert( 1 );
</script>
ÐÑÐ¸Ð½Ñ ÑоннÑе ÑкÑипÑÑ: defer/async
ÐÑаÑÐ·ÐµÑ Ð·Ð°Ð³ÑÑÐ¶Ð°ÐµÑ Ð¸ оÑобÑÐ°Ð¶Ð°ÐµÑ HTML поÑÑепенно. ÐÑобенно ÑÑо замеÑно пÑи медленном инÑеÑнеÑ-Ñоединении: бÑаÑÐ·ÐµÑ Ð½Ðµ ждÑÑ, пока ÑÑÑаниÑа загÑÑзиÑÑÑ Ñеликом, а показÑÐ²Ð°ÐµÑ ÑÑ ÑаÑÑÑ, коÑоÑÑÑ ÑÑпел загÑÑзиÑÑ.
ÐÑли бÑаÑÐ·ÐµÑ Ð²Ð¸Ð´Ð¸Ñ Ñег <script>, Ñо он по ÑÑандаÑÑÑ Ð¾Ð±Ñзан ÑнаÑала вÑполниÑÑ ÐµÐ³Ð¾, а поÑом показаÑÑ Ð¾ÑÑавÑÑÑÑÑ ÑаÑÑÑ ÑÑÑаниÑÑ.
ÐапÑимеÑ, в пÑимеÑе ниже â пока вÑе кÑолики не бÑдÑÑ Ð¿Ð¾ÑÑиÑÐ°Ð½Ñ â нижний <p> не бÑÐ´ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>ÐаÑинаем ÑÑиÑаÑÑ:</p>
<script>
alert( 'ÐеÑвÑй кÑолик!' );
alert( 'ÐÑоÑой кÑолик!' );
alert( 'ТÑеÑий кÑолик!' );
</script>
<p>ÐÑолики поÑÑиÑанÑ!</p>
</body>
</html>
Такое поведение назÑваÑÑ Â«ÑÐ¸Ð½Ñ ÑоннÑм». Ðак пÑавило, оно вполне ноÑмалÑно, но еÑÑÑ Ð²Ð°Ð¶Ð½Ð¾Ðµ ÑледÑÑвие.
ÐÑли ÑкÑÐ¸Ð¿Ñ â внеÑний, Ñо пока бÑаÑÐ·ÐµÑ Ð½Ðµ вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ ÐµÐ³Ð¾, он не Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ ÑаÑÑÑ ÑÑÑаниÑÑ Ð¿Ð¾Ð´ ним.
То еÑÑÑ, в Ñаком докÑменÑе, пока не загÑÑзиÑÑÑ Ð¸ не вÑполниÑÑÑ big.js, ÑодеÑжимое <body> бÑÐ´ÐµÑ ÑкÑÑÑо:
<html>
<head>
<script src="big.js"></script>
</head>
<body>
ÐÑÐ¾Ñ ÑекÑÑ Ð½Ðµ бÑÐ´ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½, пока бÑаÑÐ·ÐµÑ Ð½Ðµ вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ big.js.
</body>
</html>
РздеÑÑ Ð²Ð¾Ð¿ÑÐ¾Ñ â дейÑÑвиÑелÑно ли Ð¼Ñ ÑÑого Ñ Ð¾Ñим? То еÑÑÑ, дейÑÑвиÑелÑно ли оÑÑавÑÑÑÑÑ ÑаÑÑÑ ÑÑÑаниÑÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Ð´Ð¾ загÑÑзки ÑкÑипÑа?
ÐÑÑÑ ÑиÑÑаÑии, когда Ð¼Ñ Ð½Ðµ ÑолÑко ÐÐ Ñ Ð¾Ñим Ñакой задеÑжки, но она даже опаÑна.
ÐапÑимеÑ, еÑли Ð¼Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑаем внеÑний ÑкÑипÑ, коÑоÑÑй показÑÐ²Ð°ÐµÑ ÑÐµÐºÐ»Ð°Ð¼Ñ Ð¸Ð»Ð¸ вÑÑавлÑÐµÑ ÑÑÑÑÑик поÑеÑений, а заÑем идÑÑ Ð½Ð°Ñа ÑÑÑаниÑа. ÐонеÑно, непÑавилÑно, ÑÑо пока ÑÑÑÑÑик или Ñеклама не подгÑÑзÑÑÑÑ â оÑÑавÑаÑÑÑ ÑаÑÑÑ ÑÑÑаниÑÑ Ð½Ðµ показÑваеÑÑÑ. СÑÑÑÑик поÑеÑений не должен никак задеÑживаÑÑ Ð¾ÑобÑажение ÑÑÑаниÑÑ ÑайÑа. Реклама Ñоже не должна ÑоÑмозиÑÑ ÑÐ°Ð¹Ñ Ð¸ наÑÑÑаÑÑ ÐµÐ³Ð¾ ÑÑнкÑионалÑноÑÑÑ.
Ð ÑÑо, еÑли ÑеÑвеÑ, Ñ ÐºÐ¾ÑоÑого загÑÑжаеÑÑÑ Ð²Ð½ÐµÑний ÑкÑипÑ, пеÑегÑÑжен? ÐоÑеÑиÑÐµÐ»Ñ Ð² ÑÑом ÑлÑÑае Ð¼Ð¾Ð¶ÐµÑ Ð¶Ð´Ð°ÑÑ Ð¾ÑÐµÐ½Ñ Ð´Ð¾Ð»Ð³Ð¾!
ÐÐ¾Ñ Ð¿ÑимеÑ, Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñм ÑкÑипÑом (ÑÑÐ¾Ð¸Ñ Ð¸ÑкÑÑÑÑÐ²ÐµÐ½Ð½Ð°Ñ Ð·Ð°Ð´ÐµÑжка загÑÑзки):
<p>ÐÐ°Ð¶Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð½Ðµ покажеÑÑÑ, пока не загÑÑзиÑÑÑ ÑкÑипÑ.</p>
<script src="https://js.cx/hello/ads.js?speed=0"></script>
<p>...ÐÐ°Ð¶Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ!</p>
ЧÑо делаÑÑ?
Ðожно поÑÑавиÑÑ Ð²Ñе подобнÑе ÑкÑипÑÑ Ð² ÐºÐ¾Ð½ÐµÑ ÑÑÑаниÑÑ â ÑÑо ÑменÑÑÐ¸Ñ Ð¿ÑоблемÑ, но не Ð¸Ð·Ð±Ð°Ð²Ð¸Ñ Ð¾Ñ Ð½ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ, еÑли ÑкÑипÑов неÑколÑко. ÐопÑÑÑим, в конÑе ÑÑÑаниÑÑ 3 ÑкÑипÑа, и пеÑвÑй из Ð½Ð¸Ñ ÑоÑÐ¼Ð¾Ð·Ð¸Ñ â полÑÑаеÑÑÑ, дÑÑгие два его бÑдÑÑ Ð¶Ð´Ð°ÑÑ â Ñоже Ð½ÐµÑ Ð¾ÑоÑо.
ÐÑоме Ñого, бÑаÑÐ·ÐµÑ Ð´Ð¾Ð¹Ð´ÑÑ Ð´Ð¾ ÑкÑипÑов, ÑаÑположеннÑÑ Ð² конÑе ÑÑÑаниÑÑ, они наÑнÑÑ Ð³ÑÑзиÑÑÑÑ ÑолÑко Ñогда, когда вÑÑ ÑÑÑаниÑа загÑÑзиÑÑÑ. Ð ÑÑо не вÑегда пÑавилÑно. ÐапÑимеÑ, ÑÑÑÑÑик поÑеÑений наиболее ÑоÑно ÑÑабоÑаеÑ, еÑли загÑÑзиÑÑ ÐµÐ³Ð¾ поÑанÑÑе.
ÐоÑÑÐ¾Ð¼Ñ Â«ÑаÑположиÑÑ ÑкÑипÑÑ Ð²Ð½Ð¸Ð·Ñ» â не лÑÑÑий вÑÑ Ð¾Ð´.
ÐаÑдиналÑно ÑеÑиÑÑ ÑÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿Ð¾Ð¼Ð¾Ð³ÑÑ Ð°ÑÑибÑÑÑ async или defer:
- ÐÑÑибÑÑ
async -
ÐоддеÑживаеÑÑÑ Ð²Ñеми бÑаÑзеÑами, кÑоме IE9-. СкÑÐ¸Ð¿Ñ Ð²ÑполнÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð°ÑÐ¸Ð½Ñ Ñонно. То еÑÑÑ, пÑи обнаÑÑжении
<script async src="...">бÑаÑÐ·ÐµÑ Ð½Ðµ оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾Ð±ÑабоÑÐºÑ ÑÑÑаниÑÑ, а Ñпокойно ÑабоÑÐ°ÐµÑ Ð´Ð°Ð»ÑÑе. Ðогда ÑкÑÐ¸Ð¿Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑжен â он вÑполниÑÑÑ. - ÐÑÑибÑÑ
defer -
ÐоддеÑживаеÑÑÑ Ð²Ñеми бÑаÑзеÑами, вклÑÑÐ°Ñ ÑамÑе ÑÑаÑÑе IE. СкÑÐ¸Ð¿Ñ Ñакже вÑполнÑеÑÑÑ Ð°ÑÐ¸Ð½Ñ Ñонно, не заÑÑавлÑÐµÑ Ð¶Ð´Ð°ÑÑ ÑÑÑаниÑÑ, но еÑÑÑ Ð´Ð²Ð° оÑлиÑÐ¸Ñ Ð¾Ñ
async.ÐеÑвое â бÑаÑÐ·ÐµÑ Ð³Ð°ÑанÑиÑÑеÑ, ÑÑо оÑноÑиÑелÑнÑй поÑÑдок ÑкÑипÑов Ñ
deferбÑÐ´ÐµÑ ÑÐ¾Ñ ÑанÑн.То еÑÑÑ, в Ñаком коде (Ñ
async) пеÑвÑм ÑÑабоÑÐ°ÐµÑ ÑÐ¾Ñ ÑкÑипÑ, коÑоÑÑй ÑанÑÑе загÑÑзиÑÑÑ:<script src="1.js" async></script> <script src="2.js" async></script>Рв Ñаком коде (Ñ
defer) пеÑвÑм ÑÑабоÑÐ°ÐµÑ Ð²Ñегда1.js, а ÑкÑипÑ2.js, даже еÑли загÑÑзилÑÑ ÑанÑÑе, бÑÐ´ÐµÑ ÐµÐ³Ð¾ ждаÑÑ.<script src="1.js" defer></script> <script src="2.js" defer></script>ÐоÑÑÐ¾Ð¼Ñ Ð°ÑÑибÑÑ
deferиÑполÑзÑÑÑ Ð² ÑÐµÑ ÑлÑÑаÑÑ , когда вÑоÑой ÑкÑипÑ2.jsзавиÑÐ¸Ñ Ð¾Ñ Ð¿ÐµÑвого1.js, к пÑимеÑÑ â иÑполÑзÑÐµÑ ÑÑо-Ñо, опиÑанное пеÑвÑм ÑкÑипÑом.ÐÑоÑое оÑлиÑие â ÑкÑÐ¸Ð¿Ñ Ñ
deferÑÑабоÑаеÑ, когда веÑÑ HTML-докÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð¾Ð±ÑабоÑан бÑаÑзеÑом.ÐапÑимеÑ, еÑли докÑÐ¼ÐµÐ½Ñ Ð´Ð¾ÑÑаÑоÑно болÑÑойâ¦
<script src="async.js" async></script> <script src="defer.js" defer></script> Ðного много много бÑквâ¦Ð¢Ð¾ ÑкÑипÑ
async.jsвÑполниÑÑÑ, как ÑолÑко загÑÑзиÑÑÑ â возможно, до Ñого, как веÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð³Ð¾Ñов. Ðdefer.jsподождÑÑ Ð³Ð¾ÑовноÑÑи вÑего докÑменÑа.ÐÑо бÑÐ²Ð°ÐµÑ Ñдобно, когда Ð¼Ñ Ð² ÑкÑипÑе Ñ Ð¾Ñим ÑабоÑаÑÑ Ñ Ð´Ð¾ÐºÑменÑом, и Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑвеÑенÑ, ÑÑо он полноÑÑÑÑ Ð¿Ð¾Ð»ÑÑен.
async вмеÑÑе Ñ deferÐÑи одновÑеменном Ñказании async и defer в ÑовÑеменнÑÑ
бÑаÑзеÑаÑ
бÑÐ´ÐµÑ Ð¸ÑполÑзован ÑолÑко async, в IE9- â ÑолÑко defer (не Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ async).
async/defer â ÑолÑко Ð´Ð»Ñ Ð²Ð½ÐµÑниÑ
ÑкÑипÑовÐÑÑибÑÑÑ async/defer ÑабоÑаÑÑ ÑолÑко в Ñом ÑлÑÑае, еÑли назнаÑÐµÐ½Ñ Ð½Ð° внеÑние ÑкÑипÑÑ, Ñ.е. имеÑÑие src.
ÐÑи попÑÑке назнаÑиÑÑ Ð¸Ñ
на обÑÑнÑе ÑкÑипÑÑ <script>â¦</script>, они бÑдÑÑ Ð¿ÑоигноÑиÑованÑ.
Ð¢Ð¾Ñ Ð¶Ðµ пÑÐ¸Ð¼ÐµÑ Ñ async:
<p>ÐÐ°Ð¶Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ ÑепеÑÑ Ð½Ðµ ждÑÑ, пока загÑÑзиÑÑÑ ÑкÑипÑ...</p>
<script async src="https://js.cx/hello/ads.js?speed=0"></script>
<p>...ÐÐ°Ð¶Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑ!</p>
ÐÑи запÑÑке Ð²Ñ ÑвидиÑе, ÑÑо вÑÑ ÑÑÑаниÑа оÑобÑазилаÑÑ ÑÑÑ Ð¶Ðµ, а alert из внеÑнего ÑкÑипÑа поÑвиÑÑÑ Ð¿Ð¾Ð·Ð¶Ðµ, когда загÑÑзиÑÑÑ ÑкÑипÑ.
ÐолÑÑинÑÑво ÑовÑеменнÑÑ ÑиÑÑем ÑÐµÐºÐ»Ð°Ð¼Ñ Ð¸ ÑÑÑÑÑиков знаÑÑ Ð¿Ñо ÑÑи аÑÑибÑÑÑ Ð¸ иÑполÑзÑÑÑ Ð¸Ñ .
ÐеÑед вÑÑавкой внеÑнего Ñега <script> понимаÑÑий пÑогÑаммиÑÑ Ð²Ñегда пÑовеÑиÑ, еÑÑÑ Ð»Ð¸ Ñ Ð½ÐµÐ³Ð¾ подобнÑй аÑÑибÑÑ. ÐнаÑе медленнÑй ÑкÑÐ¸Ð¿Ñ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´ÐµÑжаÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ ÑÑÑаниÑÑ.
ÐÐ»Ñ Ð¿ÑодвинÑÑого ÑиÑаÑелÑ, коÑоÑÑй знаеÑ, ÑÑо Ñеги <script> можно добавлÑÑÑ Ð½Ð° ÑÑÑаниÑÑ Ð² лÑбой Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ñи помоÑи Ñамого javascript, замеÑим, ÑÑо ÑкÑипÑÑ, добавленнÑе Ñаким обÑазом, ведÑÑ ÑÐµÐ±Ñ Ñак же, как async. То еÑÑÑ, вÑполнÑÑÑÑÑ ÐºÐ°Ðº ÑолÑко загÑÑзÑÑÑÑ, без ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾ÑноÑиÑелÑного поÑÑдка.
ÐÑли же нÑжно ÑоÑ
ÑаниÑÑ Ð¿Ð¾ÑÑдок вÑполнениÑ, Ñо еÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð½ÐµÑколÑко ÑкÑипÑов, коÑоÑÑе вÑполнÑÑÑÑ ÑÑÑого один за дÑÑгим, Ñо иÑполÑзÑеÑÑÑ ÑвойÑÑво script.async = false.
ÐÑглÑÐ´Ð¸Ñ ÑÑо пÑимеÑно Ñак:
function addScript(src){
var script = document.createElement('script');
script.src = src;
script.async = false; // ÑÑÐ¾Ð±Ñ Ð³Ð°ÑанÑиÑоваÑÑ Ð¿Ð¾ÑÑдок
document.head.appendChild(script);
}
addScript('1.js'); // загÑÑжаÑÑÑÑ ÑÑи ÑкÑипÑÑ Ð½Ð°ÑнÑÑ ÑÑазÑ
addScript('2.js'); // вÑполнÑÑÑÑ, как ÑолÑко загÑÑзÑÑÑÑ
addScript('3.js'); // но, гаÑанÑиÑованно, в поÑÑдке 1 -> 2 -> 3
Ðолее подÑобно ÑабоÑÑ Ñо ÑÑÑаниÑей Ð¼Ñ ÑазбеÑÑм во вÑоÑой ÑаÑÑи ÑÑебника.
ÐÑого
- СкÑипÑÑ Ð²ÑÑавлÑÑÑÑÑ Ð½Ð° ÑÑÑаниÑÑ ÐºÐ°Ðº ÑекÑÑ Ð² Ñеге
<script>, либо как внеÑний Ñайл ÑеÑез<script src="пÑÑÑ"></script> - СпеÑиалÑнÑе аÑÑибÑÑÑ
asyncиdeferиÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ° гÑÑзиÑÑÑ Ð²Ð½ÐµÑний ÑкÑÐ¸Ð¿Ñ â бÑаÑÐ·ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð» оÑÑалÑнÑÑ (ÑледÑÑÑÑÑ Ð·Ð° ним) ÑаÑÑÑ ÑÑÑаниÑÑ. Ðез Ð½Ð¸Ñ ÑÑого не пÑоиÑÑ Ð¾Ð´Ð¸Ñ. - РазниÑа междÑ
asyncиdefer: аÑÑибÑÑdeferÑÐ¾Ñ ÑанÑÐµÑ Ð¾ÑноÑиÑелÑнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ ÑкÑипÑов, аasyncâ неÑ. ÐÑоме Ñого,deferвÑегда ждÑÑ, пока веÑÑ HTML-докÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð³Ð¾Ñов, аasyncâ неÑ.
ÐÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾ не ÑолÑко ÑиÑаÑÑ ÑÑебник, но делаÑÑ ÑÑо-Ñо ÑамоÑÑоÑÑелÑно.
РеÑиÑе задаÑки, ÑÑÐ¾Ð±Ñ ÑдоÑÑовеÑиÑÑÑÑ, ÑÑо Ð²Ñ Ð²ÑÑ Ð¿ÑавилÑно понÑли.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)