ã¿ãªããããã«ã¡ã¯ïŒ
ãã®èšäºã§ã¯ãdeferredã "deferred"ïŒjQuery.DeferredïŒãšåŒã°ããããŒãžã§ã³1.5ã®jQueryã©ã€ãã©ãªãæäŸããéåæããã»ã¹ãããã³é¢é£ãããªããžã§ã¯ããšã¡ãœãããå®éã«ã©ã®ããã«äœ¿çšã§ãããã«ã€ããŠãããã€ãã®èããå
±æããããšæããŸãã ã
ãã¡ããã
deferred / promiseã®ãã¢ãæ±ããšãããããã¯ã«ã€ããŠã¯ããã§ã«12以äžã®èšäºãå·çãããŠããŸãã ç§ã®ç®æšã¯ãåå¿è
ã«ç解ã§ããªãè€éããžã®ææãå¿ããæ©äŒãäžãã次ã«éåæããã»ã¹ã§åäœããç解å¯èœã§ããæ§é åãããã³ãŒããæžãããã®å¥ã®äžæ©ãèžã¿åºããããªç¥èãæäŸããããšã§ããã ç§ã¯ããã®ãªããžã§ã¯ãã䜿çšããããã®é
延ãåæãããã³å
žåçãªãã¿ãŒã³ã䜿çšããããšã§ç°¡åã«è§£æ±ºãããåé¡ã«ãããªããšããªãã®æ³šæãéäžããããšæããŸãã
éåæããã»ã¹
ãã®ãããéåæããã»ã¹ã¯ãä»ã®ã³ãŒããšäžŠè¡ããŠå®è¡ã§ãããšæ³å®ããŠããããã®å®è¡çµæã¯ããããåŒã³åºããŠããããã°ã©ã ã§ããã«äœ¿çšå¯èœã«ãªããŸããã ãã¡ãããããã¯
å¥åŠã§ãã
åæã¢ã¯ã·ã§ã³ã§ã¯ãªããäºãã«äžŠè¡ããŠå®è¡ãããé 次ã§ã¯ãªãã次ã
ã«å®è¡ãããŸããïŒ ç¢ºç«ãããçšèªãæ£åœåããããã«ïŒããã»ã¹ããåæãã§ãããšèšã£ãŠãæã
ã¯ãã®çµæãçŸããç¬éãããªãã¡ 1ã€ã®ããã»ã¹ã®çµäºã¯ã次ã®ããã»ã¹ã®å®è¡ã®éå§ã®ç¬éãšäžèŽãããããã®çµäºãšéå§ã¯
åæãããŸãã
var result = readValueBy(key); console.info(result);
ãéåæãããããã£ã¯ãããã»ã¹ã®çµæãæ¥ãããšã瀺ããŠããŸããããããçºçããããã°ã©ã å
ã®æ£ç¢ºãªå Žæã瀺ãããšã¯äžå¯èœã§ãã éåæããã»ã¹ã®çµæãåŠçããããžãã¯ãèšè¿°ããããã«ãããã°ã©ããŒã¯ã³ãŒã«ããã¯é¢æ°ãŸãã¯ã³ãŒã«ããã¯é¢æ°ã«é Œã£ãŠãå®éã®å
¥åãã©ã¡ãŒã¿ãŒã®åœ¢åŒã§äœæ¥ã®çµæãæž¡ããŸãã
éåæããã»ã¹ã®äŸ
ç§ãã¡ã¯ãajaxãªã¯ãšã¹ããéåæããã»ã¹ã«ãªãåŸããšããäºå®ã«æ
£ããŠããŸãã ãããŠãjQueryã®äŸ¿å©ãã䜿çšããŠãµãŒããŒåŒã³åºããäœæããã¿ã¹ã¯ã«çŽé¢ãããšããç§ãã¡ã¯äœãèããã«æ¬¡ã®ãããªãã®ãäœæããŸãã
$.post("ajax/test.html", function( data ) { $( ".result" ).html( data ); });
ããã«ãããã¯
$.post()
ã¡ãœããã®å
¬åŒjQueryããã¥ã¡ã³ãã®äŸã§ãïŒã
åç
§ ïŒã
2çªç®ã®ãã©ã¡ãŒã¿ãŒã¯ã³ãŒã«ããã¯é¢æ°ãã¡ãœããã«æž¡ããŸããã¡ãœããã¯çµæãæåã®åŒæ°ïŒãµãŒããŒã®å¿çïŒãšããŠåãåããŸã
ãã®ãããªãªã¯ãšã¹ãã®ä»£æ¿æ段ã次ã«ç€ºããŸãã
$.ajax({ type: "POST", url: "ajax/test.html", data: data, success: function( data ) { $( ".result" ).html( data ); }, dataType: dataType });
ãã®äŸã§ã¯ãæåãã³ãã©ãŒã¯ãä»ã®ãã©ã¡ãŒã¿ãŒãšå
±ã«ãªããžã§ã¯ãã®
success
ããããã£ãšããŠæž¡ãããŸãã
ãã ããjQuery 1.5以éã§ã¯ããã³ãã©ãŒãæž¡ããã«ajaxã¡ãœããïŒ$ .getã$ .postã$ .ajaxïŒãåŒã³åºãããšãã§ããŸãã ãããã®ã¡ãœããã¯ãXMLHTTPRequestãªããžã§ã¯ãã ãã§ãªã
ãPromiseã€ã³ã¿ãŒãã§ã€ã¹ã
å®è£
ããã¡ãœããã§ãªãŒããŒããŒãããããã®ãªããžã§ã¯ããè¿ã
ãŸã ã å®çšçãªèŠ³ç¹ãããããã¯éåæããã»ã¹ïŒ=ãµãŒããŒãžã®ãªã¯ãšã¹ãïŒãéå§ããããšã«ãããå®è¡ã®æåããšã©ãŒç¶æ³ã®åŠçãªã©ã®ããã«æ¥ãã§ã³ãŒã«ããã¯ã瀺ãããšãã§ãããããããæå®ããå¿
èŠããããšãã«èªåèªèº«ãå¶éããªãããšãæå³ããŸãã ãµãŒããŒãªã¯ãšã¹ããå€æ°ã«ä¿åã§ããŸãïŒ
function api(key, data) { return $.post('ajax/' + key, data); }
...ãã®åŸãå¿
èŠãªãã¹ãŠã®ã³ãŒã«ããã¯ãããã³ã°ããããŸãã
function addStandardHandlers(request, requestData, model) { request.done(function(data){
ããã°ã©ã ã«ãµãŒããŒã«æ¥ç¶ããå¿
èŠãããå Žæã101ç®æãããã©ãã§ãå¿çæ§é ãåãåŠçãå¿
èŠãšããå ŽåããµãŒããŒã®ã³ãŒã«ãã€ã³ãã§ãã³ãã©ãŒã«åãã³ãŒããçæãããå¿
èŠã«å¿ããŠãªã¯ãšã¹ãã®åã€ã³ã¹ã¿ã³ã¹ãããã³ã°ããããAjaxãªã¯ãšã¹ããä»ãçŽæã§ããããšãç¥ã£ãŠããŸãã 以äžã®çŽæã«ã€ããŠåç
§ããŠãã ããã
ãã®ä»ã®éåæããã»ã¹
æ»ã£ãŠã察åŠããªããã°ãªããªãä»ã®éåæããã»ã¹ã®äŸãæããŸãããã
- 1ã€ä»¥äžã®ç»åãã¢ããããŒãããŸãïŒãã®åŸã®ãµã€ãºã®èšå®ãããã³ç»åã®èªã¿èŸŒã¿ãŸãã¯å€±ææã«äœããã®æ±ºå®ãè¡ããŸãïŒ
- ããã¥ã¡ã³ãã®æºåç¶æ
ã®çºçïŒ dom readyã€ãã³ãïŒ
- ã¿ã€ã ã¢ãŠãç¶æ
ã®éå§
- ã€ãã¬ãŒã¿ã«å®è£
ãããé·ãèšç®ã®å®äºãšã¿ã€ã ã¢ãŠãã®ãŒã
- ããŒãžèŠçŽ ã®ã¢ãã¡ãŒã·ã§ã³ã®å®äº
- ãã€ã¢ãã°ããã¯ã¹ã®çµæïŒãOK /ãã£ã³ã»ã«ãïŒïŒããšãã°ããã€ã¢ãã°ããã¯ã¹ã¯ããã£ã³ã»ã«ãã¿ã³ãäžéšã®ååãããã«ãŠã£ã³ããŠã®åšå²ã®èæ¯ãã¯ãªãã¯ããŠãéããããšãã§ããŸãããããã¯ãã€ã¢ãã°ã§æäŸãããæäœãéæããŠããªããšè§£éã§ããŸãïŒã
- ç°çš®ã€ãã³ãã®åæçºçïŒããšãã°ãå
¥åãã©ãŒã ã®ãã¹ãŠã®æ¡ä»¶ãžã®æºæ ããªã¹ããããã¹ãŠã®ç»åãããŠã³ããŒããããã³ãã¬ãŒããå«ããã¡ã€ã«ãããŠã³ããŒãããïŒããŸãã¯äºæ³ãããã€ãã³ãã®å°ãªããšã1ã€ãçºçããïŒã¿ã€ã ã¢ãŠãã10ç§ã®ããªããŒãããã¿ã³ïŒ
é
延ã¯ã©ã®ãããªåé¡ã解決ããŸããïŒ
é¢æ°ã®ãã©ã¡ãŒã¿ãŒãŸãã¯ãªããžã§ã¯ãã®ããããã£ãšããŠã³ãŒã«ããã¯ãæž¡ã以äžã®ãã®ãå¿
èŠãªç¶æ³ã«ã€ããŠèããŠã¿ãŸãããïŒäžèšã®ç°¡åãªajaxã®äŸã§èŠãããã«ïŒïŒ
- åãããã»ã¹çµäºã€ãã³ãã«è€æ°ã®ã³ãŒã«ããã¯ãå²ãåœãŠãæ¹æ³ã¯ïŒ
- å®äºåŸã«äºæ³ãããã€ãã³ãã®çºçãèªèããæ¹æ³ã¯ïŒ
- 1ã€ã®ããã»ã¹ã§åŠçãããç¶æ³ã®ã¿ã€ãããšã«ãã¹ãŠã®ã³ãŒã«ããã¯ãã³ãã©ãŒãã°ã«ãŒãåããæ¹æ³
è€æ°ã®onloadã€ãã³ããã³ãã©ãŒã®
æåã®ãã€ã³ãã®åé¡ãã©ã®ãããåã«è§£æ±ºããããèŠããŠããŸãã
window.onload = (function(oldHandler){ return function(){ if (oldHandler) oldHandler();
ãããéå»ã®åé¡ã§ããããšã¯è¯ãããšã§ãã ä»æ¥ãããã¥ã¡ã³ãã€ãã³ãã«ã€ããŠè©±ããŠããå Žåããããè¡ã人ã¯ããŸããïŒç§ã¯é¡ã£ãŠããŸãïŒã ãããŠçŽ$ .DeferredïŒïŒ-ä»ã®ãã¹ãŠã«ã€ããŠè©±ããšãã ïŒæå³çãªèªåŒµã«ã€ããŠã¯ç³ãèš³ãããŸãããããã¬ãŒã·ã§ã³ã®ç®çãæãããŸããïŒããŠããè€æ°ã®ãã³ãã©ãŒã§äœããã¹ããïŒãã¯å¥ã®è³ªåã§ãã ããšãã°ãäžæ¹ãããŒã¿ã解æã§ããããäžæ¹ã-äžèšã®äŸã§ææ¡ããããã«ãéçšææšãé衚瀺ã«ããããã¹ããŒã¿ã¹ããã¹ããå€æŽãããšããŸãã 以åã¯ãã¢ãã«ãšãã£ã¹ãã¬ã€ã®äž¡æ¹ã1ã€ã®ãã³ãã©ãŒã«æŒã蟌ãå¿
èŠããããŸããããä»ã§ã¯å
±æã®èªç±ããããŸãã
ãŸããæ°å¹Žåã
2çªç®ã®ãã€ã³ãã¯ããã³ãã©ãŒã®æ¬äœãéããããŠãããã©ã°å€æ°ã®åšãã«äœããã®çš®é¡ã®ç©ã¿äžããããããšã«ãã£ãŠè§£æ±ºãããŸããã ãŠã£ãžã§ãããããŒãããããŸã§ã«ãã§ã«
dom readyãå®è¡ãããŠããããšããŠã£ãžã§ããã«äŒããæ¹æ³ã«ã€ããŠã©ã®ããã«èããããã¯ã£ãããšèŠããŠããŸãã ãããã
$(function(){ ... })
ããããŸããããããã¯é
延ã䜿çšããŠjQueryã«å®è£
ãããŠããŸãã ããã¯ã
dom readyã€ãã³ããçºçããåŸã«ã³ãŒããå®è¡ãããå Žåã§ãããã®èšèšã®ã³ãŒã«ããã¯ãæ©èœããããšãæå³ããŸãã 䜿çšãã¿ãŒã³ã¯ç°¡åã§ãã ãã³ãã©ãŒãããã³ã°ã¢ãããããŸãã ããã»ã¹ãæ¢ã«å®äºããŠããå Žåããã³ãã©ãŒã¯ããã«å®è¡ãããŸãã ããã§ãªãå Žåããã³ãã©ãŒïŒãã®ã¿ã€ãã®ãã¹ãŠã®ãã³ãã©ãŒïŒã¯ãå°æ¥ã®çºçæã«å®è¡ãããŸãã
3çªç®ã®åé¡ã解決ããããã«å»¶æããŠã¿ãŸãããã 延æã§ã¯ãããã»ã¹ã
æ£åžžã«å®äºããããã®ãã³ãã©ãŒã®ã°ã«ãŒãããããŸãã
倱æ ïŒèª€ã£ããŸãã¯äºæããªãïŒçµäºã®å Žåã
ä»»æã®çµããã«åŒã³åºãããã°ã«ãŒãïŒãæãïŒããããŸãã ãã³ãã©ãŒãæäœã®
é²è¡ç¶æ³ã远跡ã§ããã°ã«ãŒãããããŸãã
ããã§ã$ .DeferredïŒïŒã䜿çšããŠè§£æ±ºããã3ã€ã®åé¡ã調ã¹ãŸããã
é
延ã䜿çšããããã®åææ¡ä»¶
ããã°ã©ã ã§é
延ã䜿çšããããšãæ€èšããå¿
èŠãããå Žåã®æ¡ä»¶ã®æŠèŠã説æããŸãã
ãã®åŸãDeferredã®äœ¿çšã«ã€ããŠèããŸãã- ç¶æ
ã®éå§ãåŸ
æ©ãããã®éå§ããã³/ãŸãã¯é¢é£ããŒã¿ã®ã€ã³ãžã±ãŒã¿ãä¿åããå¿
èŠãããå Žåã æ¡ä»¶ã®çºçãåŸ
ã€ããšãæåã®æ¡ä»¶ã§ãã
- 2çªç®ã®æ¡ä»¶ã¯ãé·ãããã»ã¹ã®ã³ãŒãã®çžå¯Ÿçãªé
眮ãšããã®å€æŽ/å®äºãåŠçããã³ãŒãã«ã€ããŠèãããšãã§ãã Deferredã䜿çšãããšãåä¿¡æ¹æ³ãšåŸç¶åŠçã®æ¹æ³ã決å®ããããšã§ãããŒã¿/çµæãååŸããæ¹æ³ã®å®çŸ©ããã¢ã³ãã£ãã§ããŸãã
æåã®æ¡ä»¶ã®ç¹åŸŽã¯ãæ¡ä»¶ãçºçããç¬éã ãã§ã¯ãªã
ãæ¡ä»¶ã®
éå§ã§ããããšã«æ³šæããŠãã ããã ããã«ãããjQueryã®éåžžã®
ã€ãã³ãåŠçã¡ã«ããºã ãšDeferredãåºå¥ãããŸãã ã€ãã³ããçºçãããã³ãã©ãšåŒã°ããå¿ããããŸããã èšå®ããDeferredã«ãã£ãŠæ±ºå®ãããããã»ã¹ã®ç¶æ
ã¯ãDeferredãæ ŒçŽããŠããéãæç¶ããŸãã
2çªç®ã®åæã ã³ãŒããèŠãŠã¿ãŸãããã
$.post("ajax/cart", function( data1 ) {
æåã®èŠæ±ã¯ããŒã¿ãåãåããããã«åºã¥ããŠ2çªç®ã®èŠæ±ãè¡ããããã®çµæã«åºã¥ããŠ-åŸç¶ã®èŠæ±ãªã©ãè¡ãããŸãã ãªã¯ãšã¹ãã¯3ã€ã ãã§ãããžãã¯ã¯ç€ºãããŠããã ãã§ãããç¥ãããŠããã¢ã³ããã¿ãŒã³ãéåœã®ãã©ããããïŒéåœã®ãã©ãããïŒãæ¢ã«ãããŸãã
ç§ãããŸããŸåå ãããããžã§ã¯ãã®1ã€ã§ãã¿ã¹ã¯ã¯å¯ãã«åäœããæ¯æãã·ã¹ãã ãµã€ãããã©ãããããããšã§ããïŒCGIã§èšè¿°ãããŠããããµããŒããããŠããªãã£ããããã¹ã¿ã€ãªã³ã°ãå€æŽããµã€ããžã®åã蟌ã¿ã®åé¡ã¯ãããŸããã§ããïŒ-çŸããããŒãžWordPressã§ãæ¥é°ã§ããéåæã®ååŸããã³ãã¹ããªã¯ãšã¹ãã䜿çšããŠããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ããšãã¥ã¬ãŒãããŸãïŒã«ãŒãããŒãžã®å
¥åãååã®åéèšããã©ãŒã ã®éä¿¡ãéä¿¡ã®ç¢ºèªããŒãžã®åä¿¡ãã¢ãã¬ã¹ã®å
¥åã2çªç®ã®ãã©ãŒã ã®éä¿¡ãæ¯æãããŒã¿ã®å
¥å..ïŒ ç§ã¯ç¥ã£ãŠãããç¥ã£ãŠããã ããã¯æªãã§ãã 詳现ãèŠããŠããã®ã¯æ¥ããããã§ãã ãã€ãŠãç§ã¯ããã«è¡ã£ãŠãªãã¡ã¯ã¿ãªã³ã°ããããšãæããŠããŸããã ãããŸããããŸãããã ããããææªã®äºæ
ã¯ãæ¯æãããžãã¯ãå«ãæ¹æ³ã6ã¬ãã«ãŸãã¯7ã¬ãã«ã®ãã¹ããæã¡ãç»é¢ã®é«ãã10åã«ããããšã§ãã ãã®æ±ºå®ã«ããããã®æ¹æ³ã®ã¿ããµããŒãããããCGIããŒããããã¹ã¿ãŒãããã®éžæã¯æçœã§ã¯ãªããªããCGIããããã«æå©ã«ãªããŸããã ä»ããã®ãããªæ±ºå®ã§äœãããŸããïŒè³Œå
¥ã®ã·ãŒã±ã³ã¹ãæš¡å£ããããšã¯ãOKãã§ãããµããããŸãããïŒã
æåã«ãã¡ãœããã®ããžãã¯ãã¹ãããã«åå²ããŸãã äžèšã®äŸã«åºã¥ããŠèª¬æããŸãã
function purchaseStep01_CartDataRequestFor(input) { return $.post("ajax/cart", input); } function purchaseStep02_UpdateShippingInfoRequestFor(input) { return $.post("ajax/shipping", input); } function purchaseStep03_SubmitPaymentDetailsRequestFor(input) { return $.post("ajax/payment", input); }
第äºã«ããªã¯ãšã¹ããéä¿¡ããã ãã§ã¯äžååã§ããåçã解æããããã®äžè¬çãªæ©èœãšããŠæäŸããå¿
èŠããããŸãã
...ããã³åãªã¯ãšã¹ãã®çµæãåå¥ã«åŠçããããã®ããžãã¯ã äžèšã䜿çšããŠãã®ããžãã¯ãšäºææ§ããããŸãã
ãã®æ±ºå®ã®çæïŒ
- ããžãã¯é¢æ°ã®ãã¬ãŒãã³ã°ã«ãããã³ãŒãã¯ããå€ãã®è¡ã«æžã蟌ãŸããŸã
$.Deferred(..)
ã³ã³ã¹ãã©ã¯ã¿ãŒãã©ã®ããã«æ©èœããããèŠããŠããå¿
èŠããã$.Deferred(..)
ãŸãã2ã€ã®ãããã¹ã次ãã次ãžãšãªã³ã¯ããæ¹æ³$.Deferred(..)
ãèŠããŠããã®äžã«ãããã¹ãäžããããšãå¿ããªãã§ãã ãããã€ãŸã promiseãè¿ãhandleResponseData
é¢æ°ãåŒã³åºãåã«return
å¿ããªãã§ãã ããã
é·æïŒ
- ããŒã¿ãéä¿¡ããããžãã¯ãšåä¿¡ããå¿çãåŠçããããžãã¯ã®å€æ§æ§
- ããå Žæã§ã®æäœã®æåãšãå€éšãããã®æ±ºå®ã«åœ±é¿ãäžããããªãããšã«é¢ããææ決å®ã®ããžãã¯ã®å Žæã
handleResponseData()
ã¡ãœããã®$.Deferred(..).promise()
ã®æã - ç°ãªã段éã§ã®åãæäœã®æåã«é¢ãã決å®ããžãã¯ã®å Žæã
handleResponseData()
å
ã®def.reject(..)
åŒã³åºãã«æ³šæããŠdef.reject(..)
ã ãµãŒããŒãåäœãæåŠããå Žåã ãã§ãªããæ£åžžã«åäœãããäžååãªããŒã¿ãè¿ãããå Žåããæäœã¯å€±æãããšèŠãªãããŸãã ãŸããããŒã¿ãåŠçåŸã«æ€èšŒã«åæ Œããªãã£ãå ŽåïŒ catch(e){ .. }
ãã©ã³ãïŒã 次ã«ã$ .Deferredã䜿çšããã«å®è£
ããæ¹æ³ãèããŸãã - ããžãã¯ã®æ§é åã®æ¹åããã¹ãã®åæžããµããŒãæ§ã®åäžã
æ°ãšè³ªã®äž¡æ¹ãäžåãå©ç¹ããããšäž»åŒµãã人ã¯ã»ãšãã©ããŸããã
åæãå®èšŒããããã§ãã ããã«é²ã¿ãŸãããã äŸãå§ããåã«ãçŽæã«ã€ããŠããã€ãã®èšèãçŽæããŸãã
çŽæ
é
延ãªããžã§ã¯ããžã®ãªã³ã¯ããããããããã°ã©ã ã¯ããã»ã¹ã®çµæïŒããã»ã¹èªäœã§ã¯ãªããå Žåã«ãã£ãŠã¯ããã§ããïŒãå¶åŸ¡ãããã¹ãŠã®ãªã¹ããŒã«çµæããäŒãããæ©èœãåããŠããŸãã ãã ãããã®é
延ãªããžã§ã¯ãã«é¢é£ä»ããããŠããpromiseãªããžã§ã¯ãããŸãã¯ãpromiseãã¯ãããã°ã©ã ã«ããªã¹ãã³ã°ãå°çšã®ã¡ãœããã»ãããæäŸããŸãã ïŒãã®ãããã¯ã«é¢ãããŠã£ãããã£ã¢ã®èšäºã§ã¯ããã®ãããªèªã¿åãå°çšãªããžã§ã¯ãã¯futuresïŒfutureïŒãšåŒã°ãã$ .Deferredã¯jQueryãšããŠæ©èœããŸããæ··ä¹±ããªãããã«ããŠãã ãããïŒå®éããã®æš©éã®åé¢ã«ãããã³ãŒãã¯ãæ³å®ãããŠããªããããšããããã®ã§ãã
var def = $.Deferred();
ã»ãšãã©ã®å Žåãé
延åç
§ã䜿çšããæã䟿å©ã§å®å
šãªæ¹æ³ã¯ãäœææã«ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæž¡ãããé¢æ°å
ã§ããžãã¯ãå®çŸ©ããããšã§ãã
$.Deferred(function(def){
ãã®ãããªäœ¿çšã¯ã
.promise()
åŒã³åºãããšã«ããããã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ããããã¯ããããã«ãããã«ïŒå¿ããã«ïŒãæ»ããããšãã§ããŸãã
ç°¡åãªäŸã ã¿ã€ã ã¢ãŠãã®éå§ã¯ãããã»ã¹ã®æ£åžžãªå®äºã決å®ããŸãã
function doneTimeout(timeout) { return $.Deferred(function(def){ window.setTimeout(def.resolve, timeout); }).promise(); }
çŽæã«ã€ããŠè©±ãçŽæãæãããããã§ãã äŸã
äŸ
ãã°ããåã«ã延æ/çŽæã®æŠå¿µãèããããšãå®å
šã«ã§ããªãã£ããšèšã
ãŸã ã
åçãã¢ããããŒããã
ç¹ã«ãããã§åçã®èªã¿èŸŒã¿ãå¶åŸ¡ããæé ã«ã€ããŠç¥ããŸããã ããããåçãããŒãããããã©ããã ãã§ãªãããã®ãµã€ãºãèªèã§ããããã«ããããè¿œå ããããã«ãªããŸããïŒ
var loadImage = createCache(function(defer, url) { var image = new Image(); function cleanUp() { image.onload = image.onerror = null; } defer.then( cleanUp, cleanUp ); image.onload = function() { defer.resolve( url, { width: image.width, height: image.height }); }; image.onerror = defer.reject; image.src = url; });
ããã¥ã¡ã³ãã®æºåå®äºç¶æ
ã®çºçã®å€å®
ãã§ã«
$(function(){.. })
ã ããã¥ã¡ã³ãã®æºåãæŽã£ããšããçŽæã®ãªããžã§ã¯ããçŽç²ãªåœ¢ã§ååŸããæ¹æ³ãæããŠãã ããã
var domReadyPromise = $.ready.promise();
ã¿ã€ã ã¢ãŠãã¹ããŒã¿ã¹ã®éå§
ã¿ã€ã ã¢ãŠãã®äŸã«ã€ããŠã¯æ¢ã«æ€èšããŸãããã¿ã€ã ã¢ãŠãã®çºçã«ã¯ãããã»ã¹ã®æ£åžžãªå®äºãå¿
èŠã§ãã
doneTimeout()
ãŸãã ããããã¿ã€ã ã¢ãŠãã«ãã£ãŠããã»ã¹ããšã©ãŒã§å®äºãããšèŠãªããããªãã·ã§ã³ãå¿
èŠã«ãªããŸããã ããã«ãããŸãïŒ
function failTimeout(timeout) { return $.Deferred(function(def){ window.setTimeout(def.reject, timeout); }).promise(); }
10ç§åŸã«èªåçã«æŒãããããã¿ã³ãæŒããã©ãããæ°ã«ããªããã¿ã³ã®ããžãã¯ãå®è£
ã§ããŸãã ããã¯èµ·ãããŸããïŒ èª°ããããèããããšãã§ããŸããïŒ
var timeToSubmit = $.Deferred(function(def){ doneTimeout(10000).done(def.resolve); $('.submissionButton').one('click', function(){ def.resolve(); return false; }); }).promise(); timeToSubmit.done(function(){
ããŒãžèŠçŽ ã®ã¢ãã¡ãŒã·ã§ã³ãçµäºãã
ãµãŒããŒããããŒã¿ãå°çããæç¹ã§ã¯ãªãããããã¢ããã¡ãã»ãŒãžã§ããããæ
éã«è¡šç€ºããŠãããã®ã¡ãã»ãŒãžãæ¶ããšãã«ãããã»ã¹ãå®äºããããšãèæ
®ããå¿
èŠãããå ŽåããããŸãã ãã¡ããã次ã®ããã«ãã³ãã«ãäœæã§ããŸãïŒããã¯ãããŒãã®æåŸã«ãããªã³ã¯ã®1ã€ã䜿çšããä¿®æ£ãããäŸã§ãïŒã
function animationPromise($element){ return $.Deferred(function(def){ $element.fadeIn( 10000 , def.resolve ); }).promise(); }
ãã ããããã¯å®å
šã«äžèŠã§ãã åjQueryèŠçŽ ã¯promiseïŒïŒåŒã³åºãããµããŒãããã¢ãã¡ãŒã·ã§ã³ãçµäºããpromiseãè¿ããŸãïŒ
function animationPromise($element){ return $element.fadeIn( 10000 ).promise(); }
次ã®ããã«ãã¢ãã¡ãŒã·ã§ã³ã®æåŸãŸã§ãèããããšãã§ããŸãã
animationPromise($('#foo')).done(function(){ console.log('Animation is finished'); });
ãŸãã¯åã«ïŒ
$element.fadeIn( 10000 ).promise().done(function(){ console.log('Animation is finished'); });
ãã®æ¹æ³ã§ãããã¢ãã¡ãŒã·ã§ã³ãå¥ã®ã¢ãã¡ãŒã·ã§ã³ã«ãçŽä»ããããªãããšãå¿ããªãã§ãã ããã ããã«ã¯ãããç°¡æœã§å®æçãªæ¹æ³ããããŸãã
$element.fadeIn( 10000 ).fadeOut( 10000 );
ã¢ãŒãã«ãã€ã¢ãã°ã®ç¶æ
ããŒãžã€ã³ã¿ãŒãã§ã€ã¹ãšã®ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãæ¹åããã©ã€ãã©ãªã®äŸã¯æ°å€ããããŸãããããã°ã©ããŒã®ããšãå¿ããããšããããŸãã
äŸã¯ãTwitter Bootstrapã®ã¢ãŒãã«ãŠã£ã³ããŠã®å®è£
ã§ãïŒ
ãã¡ããåç
§ ïŒã ã衚瀺ããšãé衚瀺ããããŠã£ã³ããŠãéããŠããããããŠã£ã³ããŠãé ããŠããããšããã€ãã³ãããããŸãã ããããããã°ã©ããŒã¯ããã®ãŠã£ã³ããŠã§ãŠãŒã¶ãŒãã©ã®ãããªéžæãããããã©ã®ããã«ããŠèŠã€ããããšãã§ããŸããïŒ ã€ãŸã
ã©ã®ãªã³ã¯ããã¿ã³ã䜿çšããã®ã§ã¯ãªããã¢ã¯ã·ã§ã³ã§äœãèšã£ãã®ã§ããããïŒåœŒã®éžæã¯ãèšç»ãããããã»ã¹ã®æ£åžžãªå®äºãŸãã¯ãã£ã³ã»ã«ã«ã€ãªãããŸãããïŒããšãã°ããã€ã¢ãã°ããã¯ã¹ã¯ããã£ã³ã»ã«ãã¿ã³ã§éããããšãã§ããäžéšã«ååãããããŠã£ã³ããŠã®åšå²ã®èæ¯ãã¯ãªãã¯ããããšãã§ããŸãããããã¯ãã€ã¢ãã°ã§æäŸãããæäœãéæããŠããªããšè§£éã§ããŸãããã¡ããããã®ãããã¯ã圌ã«è¿ãå Žåã¯ãèªè
ã«Twitter Bootstrapã¢ãŒãã«ãŠã£ã³ããŠã©ãããŒã®ç¬èªã®å®è£
ã«ã€ããŠèããããšããå§ãããŸãããããŠãç§èªèº«ã®äŸãå¥ã®æ©äŒã«æããŸããããè€æ°ã®ããã»ã¹ã®æåŸ
ãçµã¿åããã
è€æ°ã®ä¿çäžã®ããã»ã¹ã®æåŸ
ãçµã¿åãããå¿
èŠãããããšã¯æããã§ããäžèšã§ã¯ãã¿ã€ã ã¢ãŠããŸãã¯ãã¿ã³ãæŒããšãã2ã€ã®ç¶æ
ã®ããããã®è¿
éãªéå§ãåŸ
ã€äŸãæ€èšããŸãããããã€ãã®ã€ãã³ããçºçããããšèªäœãã€ãã³ãã«ãªãããã®çµæããã®ã³ã³ããŒãã³ãã®çµæã«äŸåãããå€ãã®åæ§ã®ç¶æ³ããããŸãã人æ掟é£jQueryã®ç³ãåºãã¡ãæ³$.when()
åãå
¥ããçŽæãããæ°ããäžãçŽæå圌ã®çŽæã®ã³ã³ããŒãã³ããããã³æ
éãæ£åžžã«å®äºããããšãå®æããããšã«ãªã£ãŠããæåãã¡ã«ã -ããããã®å°ãªããšãäžæ¹ã®æ
éãããã¯äžçš®ã®è«çæŒç®Iã§ãããã¹ãŠã®ãªãã©ã³ããTRUEã§ããå Žåã«ã®ã¿åºåãTRUEïŒ=æåïŒã«ãªãããã以å€ã®å Žåã¯FALSEïŒ=倱æïŒã«ãªããŸããèŠãŠã®ãšãããè«çORã®é¡äŒŒç©ã§ã¯äžååã§ãã ã€ãŸã
çŽæãçµã¿åããããã®ãããªæ¹æ³ã¯ããã¹ãŠã®çŽæã倱æããå Žåã«ã®ã¿ãæäœã®å€±æãéç¥ããŸãããŸããä»ã®å Žåãæäœã¯æ£åžžã«çµäºããŸããããã§ããã®ãããªå®è£
ã®ç¬èªã®ã¹ã±ããã瀺ããŸãã
é·æå®è¡ã³ã³ãã¥ãŒãã£ã³ã°å¶åŸ¡
ç¶ç¶çãªã³ã³ãã¥ãŒãã£ã³ã°-åºããã人ã¯ç¢ºèªãã-ç¹å¥ãªã¢ãããŒããå¿
èŠã§ããèšç®å埩åãåŒã³åºããããµã€ã¯ã«ãè£è¿ããå埩åãç¡å¹ã«ããã¿ã€ã ã¢ãŠãã䜿çšããŠããã°ããå®è¡ãåŒã³åºããçµæãåŸããããŸã§åŒã³åºããç¹°ãè¿ããŸããããã»ã¹ãæ£ç¢ºã«ãã€çµäºãããã¯ãããã«ã¯ããããŸãããçŽæãé©çšããå¯èœæ§ããããŸããèªè
ãå®è£
ã«ã€ããŠèªåã§èãã次ã«äœãèµ·ããããå¥ã®ã¡ã¢ã§æ¯èŒããããšããå§ãããŸãããæž
èŽããããšãããããŸããïŒ
é¢é£ããé¢é£ãªã³ã¯