èšäºã
éåæé¢æ°ã®é 次åŒã³åºããã®ç¶ãã
ããŒã1.çè«
åŸæ¥ã®ã»ãšãã©ã®éWebããã°ã©ãã³ã°èšèªã¯åæïŒããããã³ã°ïŒã§ãã
ç¹å®ã®èšèªãåæãéåæãã倿ããã«ã¯ã©ãããã°ããã§ããïŒ ããšãã°ãããã°ã©ã ãäžå®æéå®å
šã«åæ¢ãããšãã®ã¹ãªãŒãæ©èœã®æç¡ïŒé
å»¶ãäžæåæ¢ãªã©ãšãåŒã°ããŸãïŒã
ãåç¥ã®ããã«ãJavaScriptã«ã¯ãã®ãããªæ©èœã¯ãããŸããã ããšãã°
setTimeoutã§ããããŸã£ããç°ãªãããšãè¡ããŸãã ã³ãã³ãã®å®è¡ãé
ããããããããŸããããããã¯
setTimeoutã®åŸãããã°ã©ã ã忢ãããã®äžã§äœãã§ããªããšããæå³ã§ã¯ãããŸããã
éã«ãçè«çã«ã¯ã
setTimeoutãåŒã³åºãããåŸãäžéšã®ãªãœãŒã¹ãè§£æŸãããé
å»¶ã³ãŒã«ããã¯ïŒãã¥ãŒå
ã®é¢æ°ïŒãããé«éã«å®è¡ãããå ŽåããããŸãã
åæ/éåæãšã·ã³ã°ã«ã¹ã¬ãã/ãã«ãã¹ã¬ãããæ··åããªãããšããå§ãããŸãã ãããã®æŠå¿µã¯ççµåã§ãã
JavaScriptã§éåæãå®è£
ããããšã¯ãå¥ã®æŠå¿µãžã®1ã€ã®ã¢ãããŒãã«ãããŸãã-ãã«ãã¿ã¹ã¯ãããã«ã¯æãäŒçµ±çãªè§£æ±ºçããããŸã-ãã«ãã¹ã¬ãã
ãã«ãã¹ã¬ããã®å©ç¹ïŒ
- èãæ¹ãå€ããããåŸæ¥ã®ããããã³ã°èšèªïŒC ++ãJavaãPythonïŒããåèšç·Žããå¿
èŠã¯ãããŸãã
- ãã«ãããã»ããµã³ã³ãã¥ãŒã¿ã䜿çšããŠããŠãããã°ã©ã ãã¹ã¬ããã䜿çšããŠèšè¿°ãããŠããŠãããããäºãã«ãããã¯ããªãå Žåãã€ãŸã ç¬ç«ããããŒã¿ã§åäœãããã®ãããªããã»ããµäžã®ããã°ã©ã ã¯ãããã«éãåäœããŸã
ãã«ãã¹ã¬ããã®æ¬ ç¹ïŒ
- åã¹ã¬ããã«ã¯ããŒã¿ãåŠçããå Žæãå¿
èŠãªã®ã§ããã®ã¡ã¢ãªã䜿çšãããŠãããã¹ã¬ãããã¹ãªãŒãããŠããå Žåã§ããåã¹ã¬ããã¯RAMã䜿ãæãããŸãã
ããã¯ä»¥åã¯å€§ããªåé¡ã§ããããçŸåšã¡ã¢ãªã¯å®äŸ¡ã§ãããåçŽã ããã«ãã¹ã¬ããã®Javaããã°ã©ã ã2 GBã®ã¡ã¢ãªãå æãããšãã©ããããããäžå¿«ã«ãªããŸãã - 2ã€ã®ã¹ããªãŒã ãåãåžå°ãªãªãœãŒã¹ïŒã¡ã¢ãªå
ã®ãªããžã§ã¯ãããããã¯ãŒã¯æ¥ç¶ãªã©ïŒã䜿çšããå ŽåããªãœãŒã¹ã®ãããŒã®ç«¶åïŒç«¶åç¶æ
ïŒãçºçããå¯èœæ§ããããŸãã ãèµ·ããåŸãããšããã®ã¯ããèµ·ããããšèšã£ãå Žåãããããã«æªãããšã§ãã
ã¹ã¬ããéã®ç«¶åã«å¯Ÿæããããã«ããã©ã°ãã»ããã©ãªã©ã䜿çšãããŸãããããã«ã¯1ã€ã®ç®æšããããŸããä»ã®ã¹ã¬ããã«ä¹ãããªãœãŒã¹ãåŸ
æ©ãããããšã§ãã ãã ããã¹ã¬ããAãã¹ã¬ããBãåŸ
æ©ããBãAãåŸ
æ©ããŠããå Žåããããããã¯ã®åé¡ãçºçããå¯èœæ§ããããŸãã
ãããã¯ãã«ãã¹ã¬ããã®2ã€ã®æå€§ã®æ¬ ç¹ã§ããããšãã°ãJavaããã°ã©ããŒãéãéã®ã€ã³ã¿ãã¥ãŒã§ã¯ãã Thread.startïŒïŒã¯Thread.runïŒïŒãšã©ãéãã®ã§ããïŒ ããã Howããããããã¯ãšæŠãïŒ ããªã© Javaããã°ã©ããŒã¯ãã¹ã¬ããã®è±éçãªäœæã«å€å€§ãªæéãè²»ãããããããããã«é¢é£ããåé¡ã®åæ§ã«è±éçãªå
æã«æéãè²»ãããŠããŸãã
ãããããåç¥ã®ããã«ãåŸæ¥ã®ããã»ããµã®éçºã«ã¯äžå®ã®éçããããã®ã¬ãã«ãã¬ãŒã¹ã«ããçç£æ§ã®åäžã¯ãã¯ãäžå¯èœã§ãã ãã®å Žåããã«ãã¹ã¬ããåã«ãããããšãã°ãããªã®ãšã³ã³ãŒãæãªã©ã倧éã®å€ããå°ãªããç¬ç«ããããŒã¿ã®åŠçã倧å¹
ã«å¢å ããŸãã
ããã«ãããããããããã°ã©ããŒåŽã®ãã«ãã¹ã¬ããåã«ãããã«ãã¿ã¹ã¯ã®å°è±¡ã¯æ¬¡ã®ãšããã§ãã ããããã㯠ãã
Javascriptã§ã䞊åã¿ã¹ã¯ãäœæããã«ã¯ã次ã®ããã«æžãã ãã§ãã
setTimeout(function () { console.log('Async'); }, 0);
ãŸãã¯
button.addEventListener('click', function () { console.log('Async click'); }, false)
ãã ããã䞊åã¿ã¹ã¯ãã¯ã10ã³ã¢ããã»ããµäžã§JavaScriptãããé«éã«åäœããããšãæå³ãããã®ã§ã¯ãããŸããã JavaScriptã¯ã¹ã¬ããäžç«ã§ãããECMA仿§ã¯JavaScriptãšã³ãžã³ããã«ãã¿ã¹ã¯ãå®è£
ããæ¹æ³ã説æããŠããŸããã ç§ã®ç¥ãéããæ¢åã®JavaScriptå®è£
ã¯ãã¹ãŠãããŠãŒã¶ãŒç©ºéã®ã¹ããªãŒã ããªã©ã®ãã«ãã¿ã¹ã¯ãªãã·ã§ã³ã䜿çšããŸãïŒããã»ããµã¯åäžããã»ã¹å
ã§ã¿ã€ããŒãäžæããããšã§ã¿ã¹ã¯ãè¿
éãã€è¿
éã«åãæ¿ããŸãïŒããããã¯å°æ¥ãæ žãã«ãã¹ã¬ãããJavaScriptã«è¡šç€ºãããªãããšãä¿èšŒãããã®ã§ã¯ãããŸããã
å°æ¥çã«ã¯ãçµå±ã®ãšãããã¹ããªãŒã ã¯Webã¯ãŒã«ãŒãä»ããŠå°ãå¥åŠãªæ¹æ³ã§åŒ·å¶çã«JavaScriptã«å°å
¥ãããŸããããããã«ã€ããŠã¯åŸåã§èª¬æããŸãã
ãã®ãããæšæºJavaScriptã§ã¯ãç¡éã®ã€ãã³ãã«ãŒãïŒã€ãã³ãã«ãŒãïŒãšãã³ããããã³ã°ã³ãŒã«ãä»ããŠããã¹ãŠãç°ãªãæ¹æ³ã§å®è¡ãããŸãã ãã®ã€ãã³ãã«ãŒãã¯ã¡ã€ã³ã®å¯äžã®UIã¹ã¬ããã§å®è¡ãããã³ãŒã«ããã¯ãã¥ãŒã«ã¢ã¯ã»ã¹ãããã¥ãŒãã¯ãªã¢ããããŸã§é çªã«éžæããŠå®è¡ããŸãã
trueãã©ã°ãæå®ããŠsetTimeoutãonclickãããã³XmlHttpRequestãåŒã³åºããšãæ°ããã³ãŒã«ããã¯ãã€ãã³ããã¥ãŒã«å
¥ããããŸãã ã³ãŒã«ããã¯ããã¥ãŒããéžæããŠå®è¡ãããšãå®è¡äžã«å¥ã®ã³ãŒã«ããã¯ãªã©ããã¥ãŒã«å
¥ããããšãã§ããŸãã
ããŒãã«
2æéãããããªãé«éJavaScriptãåããé«éãªWebãµã€ããå¿
èŠãªå Žåã¯ãã§ããã ãå€ãã®æäœãé
ãããŠãã§ããã ãæ©ãã¡ã€ã³ã¹ã¬ããã«ãžã£ã³ãããŠUIãè§£æŸããŸããã€ãã³ããããŒãžã£ãŒã¯ããã€ãäœããã¥ãŒããåŒã³åºããã倿ããŸããã¢ã€ãã ã¯åŸã
ã«ããŒããããŸãã
ã³ãŒã«ããã¯ãã¥ãŒãã¹ãã£ã³ããããã»ã¹ã¯äžæãããåŸ
æ©ããŸããã ããŒã¿ãåŸã
ã«ããŒãããŠãããã°ã©ã èªäœã®æçµé床ã¯å€ãããŸããããèŠçŽ ãåŸã
ã«è¡šç€ºãããéåæãµã€ãã¯ã蚪åè
ã«ãã£ãŠé«éã§ãããšèªèãããŸãã
JavaScriptã¯éåææäœã«éåžžã«é©ããŠããããŸãã«ãã®ããã«èšèšãããŸããã
æ®å¿µãªãããæ§æã«ã¯åæäŸå€ããããŸãããããã¯ããã¹ãŠããããã¯
ããfalseãã©ã°ä»ãã® alert ã
confirm ã
promtããã³
xmlhttprequestã³ãã³ãã§ãã
ãããããèšäºã®æåŸã§èª¬æãã1ã€ã®äŸå€ãé€ãããããã®ã³ãã³ãã䜿çšããªãããšã匷ããå§ãããŸãã
ããã©ãŒãã³ã¹ã®ç¹ã§ã¯ãéåæåŒã³åºãã¯åæåŒã³åºããããåžžã«åªããŠããŸãã ããšãã°ã
nginxãèŠãŠãã ãããããã¯ãäž»ã«éåææäœãå®çŸãã髿§èœã®ãããéåžžã«äººæ°ããããŸãã
æ®å¿µãªããšã« ã
node.jsã¯ãŸã æµæã§ãããå¥ã®åæã³ãã³ã
-requireãå°å
¥ããŸããã ãã®ã³ãã³ããnode.jsã«ããéããããã©ãŒãã³ã¹ã¯åžžã«äžååã§ãããšç¢ºä¿¡ããŠãããããå人çã«ã¯äœ¿çšããŸããã
ã§ã¯ããªãåæã³ãã³ããéåæèšèªã«å°å
¥ãããŠãèšèªã®ã€ããªãã®ãŒå
šäœãæãªãããã®ã§ããããïŒ
ãŸããJavaScriptãã·ã³ã¯ããèªäœã§ã¯åäœããŸãããããŠãŒã¶ãŒã座ã£ãŠãããã©ãŠã¶ãŒã§ã¯ãããã¯ã³ãã³ããJavaScriptèšèªã§ã¯ãªãããããåãå·»ãç°å¢ïŒãã©ãŠã¶ãŒïŒã«è¿œå ãããŸãããããããã®æŠå¿µãè«ççã«åé¢ããããšã¯å°é£ã§ãã
ããã©ãŠã¶ã®å察åŽãã«åº§ã£ãŠããããã°ã©ããŒã¯ãæã倿§ã§ãç°ãªãèšèªããæ¥ãŠãããã»ãšãã©ã®å Žååæçã§ãã éåæã³ãŒãã®èšè¿°ã¯ã¯ããã«é£ããããŸã£ããç°ãªãèãæ¹ãå¿
èŠã§ãã
ãã®ãããã
éåææ§ãã»ãšãã©çè§£ããŠããªãããã°ã©ããŒã®èŠæ±ã«å¿ã㊠ããã€ãã³ãã«ãŒããå®å
šã«åæ¢ããéåžžã®æªè³ªãªåæé¢æ°ã远å ããŸããã
ã¿ã¹ã¯ãéåæçã«å®äºããæ©äŒã¯åžžã«ãããŸãããéåæåŒã³åºããåæåŒã³åºãã«çœ®ãæããããšã§ç掻ãç°¡çŽ åããèªæã¯å€§ããããŸãã
éåæéçºã®è€éãã¯äœã§ããïŒ
ããšãã°ãé
ããæ©ãããJavaScriptããã°ã©ããŒã¯ãã®ãããªããã°ãã«ééããŸãïŒStackOverflowã§æãäžè¬çãªè³ªåã®1ã€ïŒã
ãµãŒããŒã³ãŒã
<?php
ã¯ã©ã€ã¢ã³ãã³ãŒã
var getBookList = function () { var boolListReturn; $.ajax({ url : 'bookList.php', dataType : 'json', success : function (data) { boolListReturn = data; } }); return boolListReturn; }; console.log(getBookListSorted());
ãã¡ãããããã§ã®èª€è§£ã¯ãajaxãªã¯ãšã¹ãããã¥ãŒã«å
¥ããconsole.logãã¡ã€ã³ã®Uiã¹ã¬ããã«æ®ã£ãŠãããšããäºå®ã«èµ·å ããŠããŸãã
ajaxãæåãããšãæåã³ãŒã«ããã¯ããã¥ãŒã«å
¥ããŸããããã€ãã¯æåãããããããŸããã ãã¡ãããconsole.logã¯ã颿°ãè¿ãããïŒæªå®çŸ©ã®ïŒäºå®ãå«ãéå»ã®ãã®ã§ãã
ããã°ã©ã ãå°ã倿Žããæ¹ãæ£ç¢ºã§ããæåã³ãŒã«ããã¯å
ã§console.logåŒã³åºããæž¡ããšããŸãããã
var getBookList = function (callback) { $.ajax({ url : 'bookList.php', dataType : 'json', success : function (data) { callback(data); } }); }; getBookList(function (bookList) { console.log(bookList); });
ããã«çŸä»£çãªæ¹æ³ã¯ãã³ãŒã«ããã¯ãæäœããããã®äŸ¿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ã«åãæ¿ããããšã§ããããšãã°ããããããçŽæãïŒçŽæãé
å»¶ãšãåŒã°ããŸãïŒ-ç¬èªã®ã³ãŒã«ããã¯ãã¥ãŒãçŸåšã®ç¶æ
ã®ãã©ã°ããã®ä»ã®ã°ããºãä¿åããç¹å¥ãªãªããžã§ã¯ãã§ãã
var getBookList = function () { return $.ajax({ url : 'bookList.php', dataType : 'json', }).promise(); };
ãã ããã³ãŒã«ããã¯ã®è² è·ãå¢ãããšã2ã€ä»¥äžã®éåæã³ãã³ãã䜿çšãããšåé¡ãçºçãããšãã2çªç®ã®åé¡ãçºçããå¯èœæ§ããããŸãã
å¥ã®ãµãŒãã¹book.phpã䜿çšããŠããªã¹ãIDããæžç±ã®ååãèŠã€ããå¿
èŠããããšæ³åããŠãã ããã
ãµãŒããŒéšåïŒ
<?php
ã¯ã©ã€ã¢ã³ãã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
var getBookList = function () { return $.ajax({ url : 'bookList.php', dataType : 'json', }).promise(); }; var getBook = function (id) { return $.ajax({ url : 'book.php?id='+id, }).promise(); }; getBookList().done(function (bookList) { $.each(bookList, function (index, bookId) { getBook(bookId).done(function (book) { console.log(book.title); }); }); });
ãã®3é建ãŠã®ã³ãŒãã¯ããã§ã«ããã»ã©ã§ã¯ãããŸããã ãã¡ãããããã§äœãèµ·ãã£ãŠããã®ããææ¡ããããšã¯å¯èœã§ããã倧éã®ãã¹ãã¯å®éã«ã¯åŠšããšãªãããã°ãçºçããå¯èœæ§ã®ããå Žæã«ãªããŸãã
ããããã°ã®1ã€ã§ãã IDãªã¹ãããœãŒããããŠããå ŽåããœãŒãã倱ãããå¯èœæ§ããããŸãã ããšãã°ãäžéšã®ãªã¯ãšã¹ããä»ã®ãªã¯ãšã¹ããããé
ãå ŽåããŸãã¯ãŠãŒã¶ãŒããã¬ã³ãããŠã³ããŒãã䞊è¡ããŠå®è¡ãå§ããå Žåããªã¯ãšã¹ãã®çµæã®çºè¡é床ã¯ãã¹ããããããå ŽåããããŸãã
phpã§ã¯ãsleepã³ãã³ãã§ããããšãã¥ã¬ãŒãããŸãã
...
ã±ãŒã¹ '2'ïŒ
ç¡ç ïŒ2ïŒ;
$ response ['title'] = "ã©ã€ãªã³2";
äŒæ©;
...
ã¹ã¯ãªããã¯åºåããŸã
ãããã£ãã1
ã¿ã€ã¬ãŒ88
ã©ã€ãªã³2
ãªã¹ãã¯ã¢ã«ãã¡ãããé ã«ãœãŒããããŠããªããããåé¡ã¯ããã«è¡šç€ºãããŸãïŒ..
ãªã¯ãšã¹ãã®æéãç°ãªãéãã©ã®ããã«ãªã¹ããæŽçã§ããŸããïŒ
ãã®åé¡ã¯èŠããã»ã©åçŽã§ã¯ãªããçŽæã®ãªããžã§ã¯ãã§ããããã§ã¯ããŸã圹ã«ç«ããããã®åé¡ãèªåã§è§£æ±ºããããšãããšãèªåã®èã§ç¶æ³ã®ãã©ããæããã§ãããã
ããŒã2.ç·Žç¿
JavaScriptã©ã€ãã©ãªã®ãã®äžå®å
šãªãªã¹ããã芧ãã ããã
async.jsãasyncãasync-miniãatbarãbeginãchainsawãchannelsãCinchãclouddãdeferredããããããEventProxy.jsãfiberizeãfibersãfibers-promiseãasyncblockãfirstãflow-jsãfunkãfuturesã promiseãgroupieãIgniteãjamãJscexãJobManagerãjsdeferredãLAEH2ãminiqueueã$ Nãnestableflowãnode.flowãnode-fnqueueãnode-chainãnode-continuablesãnode-cronãnode-crontabãnode-inflow ãnode_memoãnode-parallelãnode-promiseãnarrowãneuronãnofloãobserverãpoolrãqãread-filesãRubberduckãSCIONãseqãsexyãSignalsãsimple-scheduleãSlideãsoda.jsãStepãstepc ãstreamline.jsãsyncãQBoxãzo.jsãäžæåæ¢å¯èœããŠã©ãŒã¿ãŒãã©ãŒã«
ãããã®ãã€ã¯ã©ã€ãã©ãªã¯ãã¹ãŠããåæåœ¢åŒã§éåæã³ãŒããæžãããšãã1ã€ã®åé¡ã解決ããããšãçŽæããŸãã ã€ãŸã éåæã³ãŒããæžãããšã¯ãåæçã«æžãã®ãšåããããç°¡åã§ãã
ç§ã¯ãããã®ã»ãšãã©ã詊ããŸããããå®éã«ã¯åœŒãã¯æ¬åœã«å©ãã«ã¯ãªããŸããã æšæºã®jQuery.Deferredãšæ¯èŒãããšã倧ããªäŸ¿å©ãã«æ°ä»ããŸããã§ããã
ããããããã§ãããªãã·ã§ã³ãšã¯äœããèããŠã¿ãŸãããã
ãªãã·ã§ã³1ãåæã³ãŒã«ã
ãã¹ããããã¯ãšãªã®åé¡ã«å¯Ÿããæãããªè§£æ±ºçïŒãªã¹ããååŸãããªã¹ãã®èŠçŽ ã調ã¹ãŠãå
ã®ãªã¹ãã®é åºãç¶æããªããåèŠçŽ ã«å¯ŸããŠå¥ã®èŠæ±ãå®è¡ããïŒã¯ããã¹ãŠã®åŒã³åºããåæãããããã«æãã§ãïŒ
var getBookList = function () { var strReturn; $.ajax({ url : '../bookList.php', dataType : 'json', success : function (html) { strReturn = html; }, async : false }); return strReturn; }; var getBook = function (id) { var strReturn; $.ajax({ url : '../book.php?id='+id, success : function (html) { strReturn = html; }, async : false }); return strReturn; }; var getBookTitles = function () { return $.map(getBookList(), function (val, i) { return getBook(val).title; }); }; var ul = $('<ul/>').appendTo($('body')); $.each(getBookTitles(), function (index, title) { $('<li>'+ title +'</li>').appendTo(ul); });
ãã®ãœãªã¥ãŒã·ã§ã³ã¯ããéåžžã«é«éã§ããŒãã£ãªãã·ãªãŒãºã®ãã®ã§ãããªããªãããªã¯ãšã¹ãã¯ãã©ãŠã¶ããããã¯ããã ãã§ãªããæ¬¡ã®ãªã¯ãšã¹ããåã®ãªã¯ãšã¹ããåŸ
ã€ããããããé·ãããããã§ãã
é·æ
- ãšã©ãŒããã£ããããããã·ã³ãã«ãªã³ãŒã
- ãã¹ããç°¡å
çæïŒ
- ãã©ãŠã¶ããããã¯ããŸã
- çµæã®æéã¯ããã¹ãŠã®ãªã¯ãšã¹ãã®æéã®åèšã§ã
ãªãã·ã§ã³2ããªã¹ãã«å«ãŸãããã¹ãŠã®çŽæã®å±¥è¡ãåŸ
ã€çŽæã
æžç±ã®ãªã¹ãèªäœã¯1ã€ã®çŽæïŒãªã¹ãã§ã¯ãªãïŒã«ãªããŸããããã®äžã«ã¯åã
ã®çŽæã®ãªã¹ããå«ãŸããããã«å«ãŸãããã¹ãŠã®çŽæãæºããããåŸã«ã®ã¿ã
çµæã¯ãåæããŒã¿ãå«ãé
åãšããŠè¿ãããŸã
var getBookTitles = function () { var listOfDeferreds = []; var listDeferred = $.Deferred(); getBookList().done(function (bookList) { $.each(bookList, function (i, val) { listOfDeferreds.push(getBook(val)); }); $.when.apply(null, listOfDeferreds).then(function () { listDeferred.resolve($.map(arguments, function (triple) { return triple[0].title; })); }); }); return listDeferred.promise(); }; getBookTitles().done(function (bookTitles) { $.each(bookTitles, function (index, title) { $('<li>'+ title +'</li>').appendTo('#ul'); }); });
getBookTitles颿°ã³ãŒãã¯éåžžã«éãã§ãã äž»ãªåé¡ã¯ããããééã£ãŠãããåé¡ããã£ããããã®ãé£ããããããã°ãé£ãããšããããšã§ãã
ãã®ãªãã·ã§ã³ã®å©ç¹ïŒ
- ãã©ãŠã¶ããããã¯ããŸãã
- çµæã®æéã¯ãã¯ãšãªã®æé·ã§ãã
çæïŒ
- è€éã§æ¬ é¥ã®ããã³ãŒã
- ãã¹ããé£ãã
ãªãã·ã§ã³3ãuiã§ã®çµæã®å Žæã®äºçŽã
ãã®å ŽåãIDãªã¹ããåãåã£ãŠãããã«å«ãŸããèŠçŽ ãå埩åŠçããããã«UIãªããžã§ã¯ããäœæããŸãã
åãç¹°ãè¿ãã§ãéåæããŒã¿ã®2çªç®ã®éšåãèŠæ±ããŸãããUIãšã¬ã¡ã³ãã¯ã¯ããŒãžã£ãŒãéããŠè¡šç€ºãããã³ã³ãã³ãã§ãããåããŸãã
getBookList().done(function (bookList) { $.each(bookList, function (index, id) { var li = $('<li>Loading...</li>'); li.appendTo('#ul'); getBook(id).done(function (book) { li.html(book.title); }); }); });
é·æ
- ãã©ãŠã¶ããããã¯ããŸãã
- çµæã¯ãåã
ã®ãªã¯ãšã¹ããçµäºãããšããã«è¡šç€ºãããŸãã
- ãªã¯ãšã¹ãã¯äžŠè¡ããŠè¡ãããŸã
çæïŒ
- äžå€ã³ãŒã
- ãã¹ããé£ãã
ãªãã·ã§ã³4ãåå¥ã®Webworkerã¹ã¬ããã§ã®åæåŒã³åºãã
èšäºãæžããŠããéçšã§ãã¡ãã£ãšå€ãã£ããªãã·ã§ã³ãåºãŠããŸãã-åæãªã¯ãšã¹ããå®è¡ããŸãããWebWorkerãšã¢ãžã¥ãŒã«ãä»ããå¥ã®ã¹ã¬ããã§ã ãã®å Žåããã©ãŠã¶ãŒã¯ãããã¯ãããŸããããã³ãŒãã¯ç°¡çŽ åãããŸãã
ãããè¡ãã«ã¯ãã¯ãŒã«ãŒçšã®ãã¡ã€ã«ãäœæããããã«
node.jsã®requireã®ãããªåæé¢æ°ã䜿çšã
ãŸã ã
ã¯ãŒã«ãŒã䟿å©ã«èµ·åããããã®è£å©æ©èœã¯æ¬¡ã®ãšããã§ãã
ãŸããã¯ãŒã«ãŒãšã¢ãžã¥ãŒã«ã®äž¡æ¹ããã£ãã·ã¥ããŠãåŒã³åºãããšã«ãµãŒããŒããã¢ãžã¥ãŒã«ãããŒãããªãããã«ããŸãã
è峿·±ãããšã«ãã¢ãžã¥ãŒã«ã¯node.jsã®ããã«ãªããŸãã
åæã«ãã¢ãžã¥ãŒã«ã®åãã³ãŒãã¯ãåæïŒãŠããããã¹ãã«ãããã¹ãäžïŒãšéåæïŒå®çšŒåäžïŒã®äž¡æ¹ã§åŒã³åºãããšãã§ããŸãã
ããã«ãããã¡ã€ã³ã³ãŒãã¯3ã€ã§ã¯ãªã2é建ãŠã«ãªããããã·ã³ãã«ã«ãªããŸãã
wwarpc('modules/Books.js', 'getBookTitles').done(function (bookTitles) { $.each(bookTitles, function (index, title) { $('<li>'+ title +'</li>').appendTo('#ul'); }); });
ã€ããªãã®ãŒã§ã¯ããã¹ãŠã®æäœãã¯ãŒã«ãŒã§å®è¡ãããŸãããã¯ãŒã«ãŒã¯éåæã§åŒã³åºãããããããã¹ãã¯åžžã«æå°éã«ãªããŸãã
å©ç¹ïŒ
- æ°ãããã©ãŠã¶ããããã¯ããŸãã
- ã·ã³ãã«ã§çè§£ããããã³ãŒã
- ãã¹ããç°¡åïŒåæã¢ãŒãã§ãã¹ãã§ããéåæã§åŒã³åºãããšãã§ããŸãïŒ
çæïŒ
- IEããã³ã¯ãŒã«ãŒããµããŒãããŠããªãå€ããã©ãŠã¶ãŒããããã¯ããŸã
- çµæã®æéã¯ããã¹ãŠã®ãªã¯ãšã¹ãã®æéã®åèšã§ã
çµè«ïŒ
- ãªãã·ã§ã³3ãuiã§çµæã®å ŽæãäºçŽããããæéã®ãªãã·ã§ã³ã§ãããããè€éãªã³ãŒã
- ã³ãŒãã®å¯èªæ§ãšãã¹ãå®¹ææ§ãIEãŠãŒã¶ãŒã®å¿«é©ããããéèŠã§ããå Žåããªãã·ã§ã³4ãå¥ã®Webworkerã¹ã¬ããã§ã®åæåŒã³åºãããé©åãªéžæã«ãªãå¯èœæ§ããããŸãã
- ãªãã·ã§ã³2ã¯å³å¯ã«åé¿ããå¿
èŠããããŸãïŒããªã¹ãã«ãããã¹ãŠã®çŽæã®å±¥è¡ãåŸ
ã€çŽæãïŒ
- åæåŒã³åºãã䜿çšããããšã¯æ£åœåã§ããŸãã
- IEã¯æ»ãªãªããã°ãªããŸããïŒ
ãã®èšäºã¯ã次ã®è³æã®å°è±¡ã®äžã«æžãããŸããã