[•\ަ : ‘S‚Ä ÅV50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.sc‚Ìread.cgi‚Ö]
Update time : 07/01 11:34 / Filesize : 262 KB / Number-of Response : 1047
[‚±‚̃XƒŒƒbƒh‚Ì‘‚«ž‚Ý‚ð휂·‚é]
[{” ŋߗ§‚Á‚½ƒXƒŒ•”M‚¢ƒXƒŒˆê—— : {” ŋߗ§‚Á‚½ƒXƒŒ^‹LŽÒ•ʈꗗ] [—ÞŽ—ƒXƒŒƒbƒhˆê——]


ªƒLƒƒƒbƒVƒ…ŒŸõA—ÞŽ—ƒXƒŒ“®ì‚ðC³‚µ‚Ü‚µ‚½A‚²–À˜f‚ð‚¨Š|‚¯‚µ‚Ü‚µ‚½

ynode.jszƒT[ƒoƒTƒCƒhjavascript 3yio.jsz



1 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sageteoff [2014/12/27(“y) 18:40:07.70 ID:MwQYLNUR.net]
python‚âruby‚âPHP‚Æ“¯‚¶“y•U‚Åjavascript‚ªŽg‚¦‚邿‚¤‚ɂȂè‚Ü‚µ‚½B
ƒT[ƒoƒTƒCƒhjavascript‚ɂ‚¢‚ÄŒê‚è‚Ü‚µ‚傤B

node.js - google‚ªŠJ”­‚µ‚½V8ƒGƒ“ƒWƒ“ã‚ÅŽÀs‚Å‚«‚鈗Œn
nodejs.org/
io.js - node.js ŒÝŠ·‚Å Joyent ‚̉e‹¿‚©‚ç‚Ì’E‹p‚ð–ÚŽw‚·ˆ—Œn
iojs.org/
Rhino - JVMã‚ÅŽÀs‚Å‚«‚鈗Œn
https://developer.mozilla.org/ja/Rhino

io.js ‚ÌŒoˆÜ
stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
javascript‚Íruby‚Æ”äŠr‚µ‚Ä‚à‚©‚Ȃ葬‚¢
shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
Šî‘b‚©‚çŠw‚ÔNode.js
gihyo.jp/dev/serial/01/nodejs
node.js‚ÌŠT—v‚ƃAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­‚Ì€”õ
gihyo.jp/dev/serial/01/realtimeweb/0002

‘OƒXƒŒ
ynode.jszƒT[ƒoƒTƒCƒhjavascript 2yRhinoz
peace.2ch.net/test/read.cgi/tech/1358937029/
ynode.jszƒT[ƒoƒTƒCƒhjavascriptyRhinoz
toro.2ch.net/test/read.cgi/tech/1310087535/

2 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2014/12/27(“y) 18:40:56.41 ID:MwQYLNUR.net]
‚ ‚¯‚¨‚ß‚±‚Æ‚æ‚ë

3 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2014/12/27(“y) 18:42:30.42 ID:Cc0RXd7d.net]
yesde.js

4 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2014/12/27(“y) 22:58:41.76 ID:2nBgrTKt.net]
node.js‚Á‚Ä—¬s‚é‚ÌH

5 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2014/12/27(“y) 23:02:11.92 ID:+XmnrNOH.net]
—¬s‚Á‚Ä‚é
—¬s‚Á‚Ä‚½

6 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2014/12/31(…) 18:23:54.12 ID:ySiWi1AV.net]
gulp 4 ‚Á‚ÄŽg‚¦‚é‚ÌH

7 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2014/12/31(…) 19:45:43.48 ID:qeTCZCBA.net]
node-webkit‚âatom-shell‚̓XƒŒƒ`H
OK‚È‚çA

8 –¼‘OF¡‚Ç‚Á‚¿Ì—p‚·‚é‚©¦‚­–À‚Á‚Ä‚é‚ñ‚Å‚·‚¯‚Ç []
[‚±‚±‰ó‚ê‚Ă܂·]

9 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/01(–Ø) 16:37:51.69 ID:PtOebUla.net]
unode.jsŠo‚¦‚ê‚΃Nƒ‰ƒCƒAƒ“ƒg‚àƒT[ƒo‚àjavascript‚¾‚©‚瑼‚ÌŒ¾ŒêŠo‚¦‚È‚­‚Ä‚·‚Þ‚ºIv
‚ƈÀˆÕ‚ÉŠñ‚Á‚Ä‚«‚½‚ɂ킩‚ªƒCƒxƒ“ƒgƒhƒŠƒuƒ“Žü‚肪“ª‚É“ü‚ç‚È‚­‚Ä‚·‚²‚·‚²‘ÞŽU‚·‚éƒP[ƒX‚ª‘½‚»‚¤

10 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/02(‹à) 00:11:15.27 ID:8He3Adur.net]
>>8
‰´‚Í‚»‚ê‚ɋ߂¢



11 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/02(‹à) 00:20:31.87 ID:mlj15zVW.net]
‚Ƃ肠‚¦‚¸Promise‚ð—‰ð‚µ‚È‚¢‚Æ”ñ“¯Šú‚̃ƒŠƒbƒg‚ð¶‚©‚¹‚È‚¢‚¾‚낤‚È

12 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/02(‹à) 00:22:52.63 ID:1zRkX7fJ.net]
>>8
Ž©ŒÈЉ

13 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/02(‹à) 00:54:28.10 ID:buPBY5a2.net]
Promise ‚Á‚Ä”ñ“¯Šúˆ—‚̃R[ƒ‹ƒoƒbƒN‚ð”äŠr“IƒLƒŒƒC‚É‘‚¯‚éA
‚Á‚ĈȊO‚̃ƒŠƒbƒg‚Á‚ĉ½‚©‚ ‚é‚ÌH

14 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/02(‹à) 14:54:02.14 ID:mlj15zVW.net]
>>12
ãY—í‚Á‚Ä‚¢‚¤‚Ì‚ªžB–†‚È•\Œ»‚¾‚ª‚¨‚¨‚ނˈȉº‚̃ƒŠƒbƒg‚ª‚ ‚é
EƒR[ƒ‹ƒoƒbƒNŠÖ”‚©‚çX‚ɃR[ƒ‹ƒoƒbƒN‚ðŒÄ‚ÔŽž‚ɃlƒXƒg‚ª[‚­‚È‚é‚Ì‚ð–h‚°‚é
@(ƒ\[ƒX‚ªŽOŠpŒ`‚ɂȂé‚Ì‚ð–h‚°‚é)
EA,B,C‚Ì“àAB‚ªI‚í‚Á‚ĂĂ©‚ÂC‚ªI—¹‚µ‚½’¼Œã‚Ɉ—‚ðŠJŽn‚·‚邯‚©‚̧Œä‚ªŠÈ’P‚ɂȂé
@(‚‚¤‚©Ž©‘O‚Å‚â‚낤‚Æ‚·‚邯‚©‚È‚è–Ê“|‚ÈŽ–‚ɂȂé)
EƒGƒ‰[ˆ—‚ðˆê“Z‚߂ɂµ‚½‚è‚È‚ñ‚©‚̧Œä‚ªŠÈ’P‚ɂȂé

‚±‚ê‚ðãY—í‚É‘‚¯‚é‚̈ꌾ‚Å‚­‚­‚Á‚Ä‚µ‚Ü‚Á‚½‚瑼‚̃ƒŠƒbƒg‚Í–³‚¢

15 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/02(‹à) 16:32:56.94 ID:buPBY5a2.net]
>>13
ƒŒƒX‚³‚ñ‚­‚·B

>>8 ‚ɑ΂µ‚Ä‚ÍA‚Þ‚µ‚ëƒR[ƒ‹ƒoƒbƒNŠÖ”‚ðŽg‚Á‚½‚â‚è•û‚̂ق¤‚ª
node.js‚Ì“®ì‚ð—‰ð‚Å‚«‚Ä‚¢‚¢‚ñ‚¶‚á‚È‚¢‚©‚ÆŽv‚Á‚½‚̂łËB

16 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/03(“y) 11:31:09.56 ID:duDbuP4G.net]
>ƒ\[ƒX‚ªŽOŠpŒ`

˜R‚ê‚̓`ƒxƒbƒg‘Šø‚Ý‚½‚¢‚ɂȂé

17 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/03(“y) 22:51:09.22 ID:Uo8+VTLN.net]
Promise‚È‚ñ‚ÄŽÀÛãY—í‚É‘‚«‚â‚·‚¢ƒ‰ƒCƒuƒ‰ƒŠ‚̈ê‚‚Á‚Ä‚¾‚¯‚¾‚©‚ç
uPromise‚ð—‰ð‚µ‚È‚¢‚Æ”ñ“¯Šú‚̃ƒŠƒbƒg‚ð¶‚©‚¹‚È‚¢v‚Á‚Ă̂Í
•\‘w‚µ‚©—‰ð‚µ‚ĂȂ¢‚Á‚ÄØ‚¾‚í‚È
Promise‚Æ”ñ“¯Šú‚ðjQuery‚ÆDOM‚ɂłà’u‚«Š·‚¦‚Äl‚¦‚Ä‚Ý‚é‚Æ‚¢‚¢

18 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/03(“y) 23:38:28.29 ID:AuGuhWCh.net]
>>16
ŽÀÛ¶‚©‚¹‚È‚¢‚¾‚ë
> EA,B,C‚Ì“àAB‚ªI‚í‚Á‚ĂĂ©‚ÂC‚ªI—¹‚µ‚½’¼Œã‚Ɉ—‚ðŠJŽn‚·‚邯‚©‚̧Œä‚ªŠÈ’P‚ɂȂé
”ñ“¯Šúˆ—‚ð‚â‚Á‚Ă邯ª‚±‚¤‚¢‚¤Ž–‚ª‚µ‚å‚Á‚¿‚イ‚ ‚邯‚ÇA‚Ç‚¤‚â‚Á‚ÄŽ©‘O‚Å‚â‚ñ‚ÌH
’P‚Ƀtƒ‰ƒO‚¾‚炯‚Ì•³‚Ý‚½‚¢‚ȃ\[ƒX‚ªo—ˆ‚邾‚¯‚¾

19 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:06:14.65 ID:NffMCEWR.net]
‚»‚Ì’ö“x‚ÍŽ©‘O‚Å‚à•À—ñ‚Æ’€ŽŸ‚̬‚³‚ȃwƒ‹ƒpŠÖ”‚ð—pˆÓ‚·‚邾‚¯‚Å\•ª‚«‚ê‚¢‚É‘‚¯‚邾‚ë
ŽÀÛ‚Í‚»‚ñ‚È‚à‚ñŽ©‘O‚Å‘‚©‚¸‚ÉasyncŽg‚Á‚Ä‚½‚¯‚Ç‚È
ECMA•W€‚¾‚©‚çŽdŽ–‚¶‚áPromiseŽg‚Á‚Ä‚­‚¯‚Ç‚»‚ñ‚Ȃ̂͊‘F•\‘w‚̘b‚ɉ߂¬‚È‚¢‚æ
Promise‚æ‚èStream‚ª“K‚·‚邱‚Æ‚à‘½‚¢‚µ

20 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:10:50.21 ID:kuXg+7pG.net]
>>18
‚Ç‚¤‚¹ƒ}ƒ‹ƒ`ƒXƒŒƒbƒhvs”ñ“¯Šúˆ—‚ÌŽ–‚¢‚Á‚Ä‚ñ‚¾‚ë
‚»‚ñ‚ÈŽ–Œ¾‚Á‚Ä‚ñ‚¶‚á‚Ë[‚ñ‚¾‚æ
ƒXƒŒ‚Ì—¬‚ê‚à“ǂ܂¸‚ɉ½ˆêl‚Ńuƒ`Ø‚ê‚Ä‚ñ‚¾‚æƒAƒz‚©



21 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:18:39.72 ID:LcMrfHes.net]
>>18
ˆê•û‰´‚ÍAasync‚à‚Ç‚«‚ðŽ©‘O‚Åì‚Á‚½BiŽï–¡‚Å‚¾‚¯‚Çj

”ñ“¯Šúˆ—‚Ì’†‚Å‚³‚ç‚É”ñ“¯Šúˆ—‚ð‚µ‚ÄA‚»‚ꂼ‚ê‚ÌI—¹Žž‚ÉŽw’肳‚ꂽŠÖ”‚ðŒÄ‚Ño‚·
‰Â”\«‚ª‚ ‚邿‚¤‚ȃvƒƒOƒ‰ƒ€‚¾‚Á‚½‚ñ‚ÅA“r’†“ª‚ª‚±‚ñ‚ª‚炪‚Á‚½‚¯‚lj½‚Æ‚©‚Å‚«‚½‚íB

22 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:26:18.12 ID:kuXg+7pG.net]
>>20
ˆê‰ž‚¾‚¯‚ÇAƒuƒ‰ƒEƒU“à‘ ‚ÌPromise‚ÍJavaScript‚ÅŽÀ‘•o—ˆ‚È‚¢Ž–‚ð‚µ‚Ä‚é‚©‚ç
PromiseŽg‚Á‚½•û‚ª‚¢‚¢‚Ƃ͎v‚¤‚æ
E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é
Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é
‚Á‚Ă̂ª‚»‚¤

23 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:35:28.28 ID:NffMCEWR.net]
>>19
‚Ç‚±‚ðŒë“Ç‚·‚邯‚»‚¤‚È‚é‚ñ‚¾‚æwww
•À—ñ‚Á‚Ă̂ÍPromise.all()‚âasync‚Ìparallel()‚̂悤‚Ȉ—ƒtƒ[‚Ì‚±‚Æ
’€ŽŸ‚Á‚Ă̂ÍPromise‚Ìthen()‚É‚æ‚éƒ`ƒF[ƒ“‚âasync‚Ìseries()Ewaterfall()‚̂悤‚Ȉ—ƒtƒ[‚Ì‚±‚Æ
‰´‚Ì•û‚̓XƒŒ‚Ì—¬‚ê‚ð“Ç‚ß‚Ä‚é‚ÆŽv‚¤‚¼

24 –¼‘OF20 mailto:sage [2015/01/04(“ú) 00:38:56.49 ID:LcMrfHes.net]
>>21
ƒuƒ‰ƒEƒU‚ÌJavascript‚àƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚¶‚á‚È‚©‚Á‚½‚Á‚¯H
‚Å‚ ‚ê‚ÎA
E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é
Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é
‚ÍPromiseŽg‚í‚È‚­‚Ä‚à‚Å‚«‚邿BŽg‚Á‚½•û‚ªŠy‚¾‚낤‚¯‚ÇB

25 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:53:04.50 ID:kuXg+7pG.net]
>>23
> E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é
‚±‚ê‚ÍsetTimeoutŽg‚Á‚½ƒnƒbƒN‚ª‚ ‚Á‚ĂقڊmŽÀ‚Ȃ͉̂”\‚¾‚¯‚ÇA
â‘ΊmŽÀ‚ÈŽÀ‘•‚̓uƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—‚È‚ñ‚¾‚æ‚Ë

> Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é
‚»‚è‚áAƒ‰ƒCƒuƒ‰ƒŠ“à•”‚Ìcatch“à‚ɃuƒŒ[ƒNƒ|ƒCƒ“ƒg‚𒣂Á‚đ҂¿‚©‚Ü‚¦‚Ä‚¢‚ê‚Î
‰Â”\‚¾‚ª–ˆ‰ñ‚»‚ñ‚ÈŽ–‚·‚ñ‚Ì‚©H‚¢‚â‚·‚é‚킯‚È‚¢
‚»‚µ‚Ä—áŠO‚ªƒXƒ‹[‚³‚ê‚ĉ½‚à‹N‚«‚È‚¢

26 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:54:44.21 ID:NffMCEWR.net]
>>21
ƒT[ƒoƒTƒCƒhJSƒXƒŒ‚Åuƒuƒ‰ƒEƒU“à‘ ‚ÌPromisev‚Á‚Äw
‚»‚±‚Ív8‚ÌPromiseŽÀ‘•‚Á‚Ä‘‚¯‚æ

>>22
Q‚Æ‚©Blurbird‚Í‚»‚ê‚ç‚ðJS‚ÅŽÀ‘•‚µ‚Ä‚é‚킯‚¾‚©‚ç‚È
‚Ç‚¤‚µ‚ÄJS‚ÅŽÀ‘•‚Å‚«‚È‚¢‚ÆŽv‚¢ž‚ñ‚¾‚Ì‚©“䂾

27 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 00:56:26.84 ID:NffMCEWR.net]
ˆÀ‰¿ƒ~ƒXA>>25‚̌㔼‚Í>>23‚ւ̃ŒƒX
‚ ‚ÆBlurbird‚¶‚á‚È‚­‚ÄBluebird

28 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 01:03:40.55 ID:kuXg+7pG.net]
>>25
ƒuƒ‰ƒEƒU“à‘ ‚Á‚Äc‚²‚ß‚ñ‚¿‚á‚¢

Q‚Æ‚©Blurbird‚͂قڊmŽÀ‚ÈŽÀ‘•‚Å‚¨’ƒ‚ð‘÷‚µ‚Ä‚é (ŽÀ—pã–â‘è‚È‚¢‚¯‚Ç)
—áŠO‚ÌŒ‚Í>>24‚̒ʂ肾

29 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 01:21:16.51 ID:NffMCEWR.net]
>>27
u‚¨’ƒ‚ð‘÷‚µ‚Ä‚év‚ɂ‚¢‚ÄÚ‚µ‚­
node‚Å‚Íprocess.nextTick()‚©setImmediate()‚ÅŠmŽÀ‚É”ñ“¯Šú‚ɂł«‚邪H
v8‚ÌPromise‚¾‚Á‚ă}ƒCƒNƒƒ^ƒXƒNƒLƒ…[‚É“ü‚ê‚ç‚ê‚ÄŒ‹‹Ç‚Ínode‚̃Cƒxƒ“ƒgƒ‹[ƒv‚ň—‚³‚ê‚é‚͓̂¯‚¶

—áŠO‚̃fƒoƒbƒO‚Á‚Ä‹ï‘Ì“I‚É‚ÍH
Promise.catch()‚ɃuƒŒ[ƒNƒ|ƒCƒ“ƒg•t‚¯‚ê‚é‚Á‚ĘbH(‚»‚ê‚̓uƒ‰ƒEƒUŠÖŒW‚È‚¢‚ÆŽv‚¤‚ªcH)
‚à‚µ‚»‚¤‚Ȃ烉ƒCƒuƒ‰ƒŠ‚ªcatch‚µ‚½—áŠO‚̓R[ƒ‹ƒoƒbƒN‚Ì‘æ1ˆø”‚É“n‚³‚ê‚é‚Ì‚ªnode‚Ì—¬‹V‚Å“¯‚¶‚悤‚ɂł«‚邪H

30 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 01:41:12.11 ID:NffMCEWR.net]
‚ÅA>>19‚Í>>18‚ðŒë“Ç‚µ‚Ä‚½‚Á‚Ä‚±‚Ƃł¢‚¢‚Ì‚©H >>22‚ð“Ç‚ñ‚¾ã‚ł̔½˜_‚ÍH



31 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 01:57:43.71 ID:kuXg+7pG.net]
>>28
> node‚Å‚Íprocess.nextTick()‚©setImmediate()‚ÅŠmŽÀ‚É”ñ“¯Šú‚ɂł«‚邪H
Q‚Æ‚©‚Ínode—p‚âIE—p‚¶‚á‚È‚¢‚ªAꇕª‚¯‚µ‚Ä‚é‰Â”\«‚Í‚ ‚é
> v8‚ÌPromise‚¾‚Á‚ă}ƒCƒNƒƒ^ƒXƒNƒLƒ…[‚É“ü‚ê‚ç‚ê‚ÄŒ‹‹Ç‚Ínode‚̃Cƒxƒ“ƒgƒ‹[ƒv‚ň—‚³‚ê‚é‚͓̂¯‚¶
‚»‚ꂪJavaScript‚ÅŽÀ‘•o—ˆ‚È‚¢Ž–‚ð‚µ‚Ä‚é‚±‚Æ‚¶‚á‚È‚­‚ÄH

> —áŠO‚̃fƒoƒbƒO‚Á‚Ä‹ï‘Ì“I‚É‚ÍH
à–¾‚ª–Ê“|‚ɂȂÁ‚Ä‚«‚½c
Promise‚ÉŒÀ‚Á‚½˜b‚µ‚¶‚á‚È‚¢‚ªAƒ‰ƒCƒuƒ‰ƒŠ“à‚Åtry,catch‚µ‚¿‚á‚Á‚Ă邯
ŒÄ‚Ño‚µ‘¤‚É—áŠO‚ª—ˆ‚È‚¢‚Á‚ÄŽ–‚¾ (“–‚½‚è‘O‚ÌŽ–‚¾‚¯‚Ç)
‚ÅAPromise‚Ìꇂ͌ĂÑo‚µ‘¤‚ªƒGƒ‰[ˆ—‚à‚µ‚ĂȂ¢ê‡‚Å‚àA


32 –¼‘OFƒfƒoƒbƒK‚ª‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ðã‚°‚Ä‚­‚ê‚é‚Á‚Ä‚¾‚¯‚¾

‚ÜA”–XŠ´‚¢‚Ă邯Žv‚¤‚ªA‰´‚Í‚¸‚Á‚ƃuƒ‰ƒEƒUŽÀ‘•‚ÌŽ–‚ðŒ¾‚Á‚Ä‚¢‚½c
‚µ‚©‚µPromise‚ª–ž‚½‚·‚ׂ«ˆê”Ê“I‚È“®ìŽd—l‚ðŒ¾‚Á‚Ă邂à‚è‚ł͂ ‚é
[]
[‚±‚±‰ó‚ê‚Ă܂·]

33 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 02:35:21.46 ID:NffMCEWR.net]
>>30
> ‚»‚ꂪJavaScript‚ÅŽÀ‘•o—ˆ‚È‚¢Ž–‚ð‚µ‚Ä‚é‚±‚Æ‚¶‚á‚È‚­‚ÄH

node‚Å‚Ív8‚̃}ƒCƒNƒƒ^ƒXƒNƒLƒ…[‚àsetImmediate()‚ànode‚̃Cƒxƒ“ƒgƒ‹[ƒv‚ň—‚³‚ê‚é‚͓̂¯‚¶‚Á‚ĈӖ¡‚È
‚‚܂èJS‚ÌsetImmediate()‚ŃR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ɂł«‚é‚Á‚Ä‚±‚Æ
‚±‚ê‚̓uƒ‰ƒEƒU‚Å‚à“¯‚¶‚Í‚¸‚¾
ˆá‚¤‚È‚çuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚È——R‚ð‹ï‘Ì“I‚É‘‚¢‚Ä‚­‚ê

> ŒÄ‚Ño‚µ‘¤‚É—áŠO‚ª—ˆ‚È‚¢‚Á‚ÄŽ–‚¾ (“–‚½‚è‘O‚ÌŽ–‚¾‚¯‚Ç)

ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŽÀ‘•ˆË‘¶‚ł͂ ‚邪Anode‚ł͓–‚½‚è‘O‚¶‚á‚È‚¢
node‚ł͗áŠO‚ð‘æ1ˆø”‚Æ‚µ‚ăR[ƒ‹ƒoƒbƒN‚·‚邱‚ƂŌĂÑo‚µ‘¤‚É—áŠO‚ð“`‚¦‚é‚Ì‚ª—¬‹V‚¾
‚¾‚©‚çPromise‚Ånode‚ÌAPI‚⃉ƒCƒuƒ‰ƒŠ‚ðƒ‰ƒbƒv‚µ‚Ä‚àPromise.catch()‚É—áŠO‚ª“n‚é
(ƒ‰ƒbƒp[‚̓R[ƒ‹ƒoƒbƒN‚Ì‘æ1ˆø”‚É—áŠO‚ª“n‚³‚ꂽ‚çPromise.reject()‚ðŒÄ‚Ño‚·)

>>21‚ðŒ©‚Ä‚©‚ç”–X‚¶‚á‚È‚­ŠmM‚µ‚Ä‚¢‚½

34 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 02:54:15.95 ID:kuXg+7pG.net]
>>31
> ˆá‚¤‚È‚çuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚È——R‚ð‹ï‘Ì“I‚É‘‚¢‚Ä‚­‚ê
setImmediate()‚ªƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚Éo—ˆ‚é‚Á‚Ä‚¢‚¤Žd—l‚ł͂Ȃ¢‚¾‚ë
ŠmŽÀ‚É”ñ“¯Šú‚Á‚ĈӖ¡‚Í
setImmediate(function callback() {
});
a += 1;‚Ý‚½‚¢‚ȂȂñ‚ç‚©‚̈— ©‚±‚ꂪŽÀs‚³‚ê‚é‘O‚Écallback‚ªâ‘ÎŽÀs‚³‚ê‚È‚¢
‚±‚Æ‚ð•ÛØ‚µ‚Ä‚ñ‚ÌH
‚»‚à‚»‚à”ñ•W€‚ÌAPI‚È‚ñ‚¾‚¯‚Çc

> ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŽÀ‘•ˆË‘¶‚ł͂ ‚邪Anode‚ł͓–‚½‚è‘O‚¶‚á‚È‚¢
Q‚Æ‚©Bluebird‚Ý‚½‚¢‚ÉŽ©‘O‚ÅŽÀ‘•‚·‚邯—áŠO‚ªˆù‚Ü‚ê‚é‚Á‚Ęb‚µ‚¶‚á‚È‚©‚Á‚½‚Ì‚©c
Promise‚ÌŽÀ‘•‚ð”M•Ù‚µ‚Ă邯‚ÇA‚Ƃ肠‚¦‚¸‚»‚¤‚¢‚¤Ž–‚Å‚¢‚¢‚æ

35 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 03:42:19.87 ID:NffMCEWR.net]
>>32
> ‚±‚ꂪŽÀs‚³‚ê‚é‘O‚Écallback‚ªâ‘ÎŽÀs‚³‚ê‚È‚¢
‚±‚Æ‚ð•ÛØ‚µ‚Ä‚ñ‚ÌH

Žd—l‚Í‚»‚¤‚È‚Á‚Ä‚é
https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html

> ‚»‚à‚»‚à”ñ•W€‚ÌAPI‚È‚ñ‚¾‚¯‚Çc

‚»‚±‚Í‚±‚ÌNotes‚É‘‚¢‚Ä‚ ‚é"platform code"‚©‚çD‚«‚È‚à‚̂ɒu‚«Š·‚¦‚Ä‚­‚ê
https://github.com/promises-aplus/promises-spec

> Q‚Æ‚©Bluebird‚Ý‚½‚¢‚ÉŽ©‘O‚ÅŽÀ‘•‚·‚邯—áŠO‚ªˆù‚Ü‚ê‚é‚Á‚Ęb‚µ‚¶‚á‚È‚©‚Á‚½‚Ì‚©c

>>23i‚±‚ê‚͉´‚Ƃ͕Êlj‚©‚ç‚Íu‚»‚êPromiseŽg‚í‚È‚­‚Ä‚à‚Å‚«‚邿v‚Á‚Ęb‚ð‚µ‚Ä‚é‚È
‚»‚ê‚Í“–‘RJS‚Å‘‚©‚ꂽQ‚âBluebird‚Å‚à‚Å‚«‚é‚Á‚Ä‚±‚Æ‚¾‚©‚猳‚̘b‚ƈá‚Á‚Ä‚é‚킯‚ł͂Ȃ¢AƒXƒR[ƒv‚ªL‚ª‚Á‚½‚¾‚¯
‚ÅAQ‚Æ‚©Bluebird‚¾‚Æ—áŠO‚ªˆù‚Ýž‚Ü‚ê‚é‚킯HƒR[ƒh‚ÅŽ¦‚¹‚éH

36 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 04:38:34.06 ID:kuXg+7pG.net]
>>33
> Žd—l‚Í‚»‚¤‚È‚Á‚Ä‚é
Schedules to run handler immediately after user agent events have been flushed.
user agent events‚Á‚ĂȂñ‚¾H
a += 1;‚ÌŽÀs‚ªI‚í‚Á‚Ä‚©‚ç‚Æ‚ÍŒ¾‚Á‚ĂȂ¢‚ÆŽv‚¤‚ª

> ‚»‚±‚Í‚±‚ÌNotes‚É‘‚¢‚Ä‚ ‚é"platform code"‚©‚çD‚«‚È‚à‚̂ɒu‚«Š·‚¦‚Ä‚­‚ê
’u‚«Š·‚¦‚ĉ½‚¾‚æH
platform code(—v‚·‚é‚ÉJavaScript‚łȂ¢ƒR[ƒh)‚ðŽÀs‚µ‚ë‚Æ‚í‚´‚í‚´‘‚¢‚Ä‚é
> ˆá‚¤‚È‚çuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚È——R‚ð‹ï‘Ì“I‚É‘‚¢‚Ä‚­‚ê
Œ³‚ÌŽ¿–â‚ͪ‚±‚êA‚¨‘O‚͘_“_‚ð‚¸‚ç‚»‚¤‚Æ‚µ‚Ă邾‚¯‚¾‚È

> ‚ÅAQ‚Æ‚©Bluebird‚¾‚Æ—áŠO‚ªˆù‚Ýž‚Ü‚ê‚é‚킯HƒR[ƒh‚ÅŽ¦‚¹‚éH
‚¨‘O–°‚¢‚Ì‚©w
‰´‚Í‚à‚¤‚à‚¿‚»‚¤‚à‚È‚¢‚ª
>>30‚̉º‚Ì•û‚ÅŒ¾‚Á‚Ă邿

37 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 14:15:40.27 ID:DzK37a2V.net]
https://twitter.com/msdev/status/551558635198099457/photo/1
‚à‚µ1995”N‚Énode.js‚ª‚ ‚Á‚½‚ç

38 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 14:59:18.44 ID:x8qIKDC6.net]
“ü‚ê‘Ö‚¦‚ñ‚Ì‚ª‚ƂÂà‚È‚¢ƒ{ƒgƒ‹ƒlƒbƒN‚â‚È

39 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:12:14.10 ID:HFKhuxk5.net]
‚±‚ñ‚ȓ‚¢‹c˜_—‰ð‚Å‚«‚È‚¢‚Æ
ãY—í‚ȃR[ƒh‘‚¯‚È‚¢Žž“_‚Ål‹Co‚È‚¢‚¾‚낤‚Ë

40 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:24:29.87 ID:l0Z2uGSM.net]
‚»‚ñ‚ȓ‚¢˜b‚©‚ŸH



41 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:39:24.09 ID:w2TCoU2v.net]
>>35
‚»‚¢‚‚ªƒAƒz‚È‚¾‚¯

42 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:44:05.85 ID:CtgO5+tK.net]
>>39
ÈÀÆÏ¼ÞÚ½¶ºÜÙ²

43 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 16:57:31.37 ID:2KBXdzj3.net]
‚»‚Ì ‚É‚Í‚à‚¤MPC‹KŠi‚ª•‹y‚µ‚Ä
CD-ROMƒhƒ‰ƒCƒu‚ª•

44 –¼‘OFW€‚ł‚¢‚Ă邯‚¢‚¤‚Ì‚É(TOWNSƒ†[ƒU[•À‚ÌŠ´‘z []
[‚±‚±‰ó‚ê‚Ă܂·]

45 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 17:40:22.84 ID:NffMCEWR.net]
>>37-38
‹Zp“I‚ɓ‚¢˜b‚Í‚µ‚ĂȂ¢‚ªA‚±‚¤‚¢‚¤ê‚ʼnï˜b‚𬗧‚³‚¹‚é‚͓̂‚¢‚Èw
‚Å‚«‚ê‚Î’N‚© ID:kuXg+7pG ‚ÌŽå’£‚ð–|–󂵂ė~‚µ‚¢

46 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 18:06:08.86 ID:NffMCEWR.net]
>>34
> a += 1;‚ÌŽÀs‚ªI‚í‚Á‚Ä‚©‚ç‚Æ‚ÍŒ¾‚Á‚ĂȂ¢‚ÆŽv‚¤‚ª

"5 Processing Model"‚Ì4‚ÉA5ˆÈ~‚Í”ñ“¯Šú‚ÉŽÀs‚·‚邯‘‚¢‚Ä‚ ‚é

> ’u‚«Š·‚¦‚ĉ½‚¾‚æH

‚¨‘O‚ªŽg‚Á‚Ä‚éƒuƒ‰ƒEƒU‚ɇ‚킹‚ēǂݑւ¦‚ë‚Æ‚¢‚¤‚¾‚¯‚¾
ƒT[ƒoƒTƒCƒhJSƒXƒŒ‚Æ‚µ‚Ä‚Ínode‚ÅŽg‚¦‚éprocess.nextTick()‚âsetImmediate()‚ʼn½‚Ì–â‘è‚à‚È‚¢

> platform code(—v‚·‚é‚ÉJavaScript‚łȂ¢ƒR[ƒh)‚ðŽÀs‚µ‚ë‚Æ‚í‚´‚í‚´‘‚¢‚Ä‚é

"paltform code"‚̓vƒ‰ƒbƒgƒtƒH[ƒ€‚²‚ƂɈقȂéƒR[ƒh‚Æ‚¢‚¤ˆÓ–¡‚Å
‚»‚ꂪJS‚ÅŽÀ‘•‚³‚ê‚Ă悤‚ª‚³‚ê‚Ă܂¢‚ª‚Ç‚¤‚Å‚à‚¢‚¢
ŽÀ‚̂Ƃ±‚ënode‚ÌsetImmediate()‚ÍJS‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚é

https://github.com/joyent/node/blob/v0.10/lib/timers.js#L361

> > ˆá‚¤‚È‚çuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚È——R‚ð‹ï‘Ì“I‚É‘‚¢‚Ä‚­‚ê
> Œ³‚ÌŽ¿–â‚ͪ‚±‚êA‚¨‘O‚͘_“_‚ð‚¸‚ç‚»‚¤‚Æ‚µ‚Ă邾‚¯‚¾‚È

‚¢‚Ý‚Ó
uƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚Ì‘ÎÛ‚ÍPromise‚»‚Ì‚à‚̂̎À‘•‚¾
Promise‚ÌŽÀ‘•‚ªŒÄ‚Ño‚·API‚̘b‚¶‚á‚È‚¢
ustring‚̓uƒ‰ƒEƒU‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚év‚ð——R‚Éustring‚ðŽg‚¤‚̂̓uƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚Á‚Ä‚¨‚©‚µ‚¢‚¾‚ëH
"platform code"‚ªƒuƒ‰ƒEƒU‚ânode‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚Ä‚àA‚»‚ê‚ðŽg‚¤ƒR[ƒh‚ÍJS‚Å‘‚¯‚é
‚½‚Æ‚¦‚ÎQ‚Í‚±‚̕ӂÅ"platform code"‚ðŒÄ‚Ñ•ª‚¯‚Ä‚é (ƒ‚ƒ_ƒ“ƒuƒ‰ƒEƒU‚¾‚ÆpostMessage()‚ªŽg‚í‚ê‚Ä‚é‚È)

https://github.com/kriskowal/q/blob/v1/q.js#L160

‚±‚ê‚Íuƒuƒ‰ƒEƒU‚ª“à•”‚ÅŽÀ‘•‚µ‚È‚¢‚Æ–³—v‚ł͂Ȃ­•’Ê‚ÌJS‚̃R[ƒh‚¾

47 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 18:08:08.79 ID:NffMCEWR.net]
>>34
> >>30‚̉º‚Ì•û‚ÅŒ¾‚Á‚Ă邿

˜b‚ªƒ‹[ƒv‚µ‚Ä‚é‚Èc ‚»‚Ì>>30‚̈ȉº‚ɂ‚¢‚Ä

> Promise‚ÉŒÀ‚Á‚½˜b‚µ‚¶‚á‚È‚¢‚ªAƒ‰ƒCƒuƒ‰ƒŠ“à‚Åtry,catch‚µ‚¿‚á‚Á‚Ă邯
> ŒÄ‚Ño‚µ‘¤‚É—áŠO‚ª—ˆ‚È‚¢‚Á‚ÄŽ–‚¾ (“–‚½‚è‘O‚ÌŽ–‚¾‚¯‚Ç)

‚±‚ê‚ÍPromise‚ðŽÀ‘•‚·‚éQ‚̂悤‚ȃ‰ƒCƒuƒ‰ƒŠ‘¤‚̘b‚¾‚æ‚ÈH
ƒ‰ƒCƒuƒ‰ƒŠ‘¤‚ªcatch‚µ‚½—áŠO‚ðˆù‚Ýž‚ñ‚Ŏ̂Ă½ê‡‚ÍŠm‚©‚É‚»‚¤‚¾‚ªA
Q‚âBluebird‚͈ù‚Ýž‚Ü‚¸‚ÉPromise.catch()‚É’Ê’m‚·‚邾‚ë
Promise‚ðŽg‚í‚È‚¢ê‡‚Å‚ànode‚Ì—¬‹V‚È‚çƒR[ƒ‹ƒoƒbƒN‚Ì‘æ1ˆø”‚Å’Ê’m‚·‚é
‚¾‚©‚炱‚ê‚Íuƒuƒ‰ƒEƒU“à‘ ‚ÌPromise‚ÍJavaScript‚ÅŽÀ‘•o—ˆ‚È‚¢Ž–‚ð‚µ‚Ä‚év‚ÉŠY“–‚µ‚È‚¢
‚Á‚Ä‚¢‚¤‚Ì‚ª>>31‚Å‘‚¢‚½‚±‚Æ‚¾
‚»‚ê‚ɑ΂µ‚Ä>>32‚Å

> Q‚Æ‚©Bluebird‚Ý‚½‚¢‚ÉŽ©‘O‚ÅŽÀ‘•‚·‚邯—áŠO‚ªˆù‚Ü‚ê‚é‚Á‚Ęb‚µ‚¶‚á‚È‚©‚Á‚½‚Ì‚©c

‚ƕԂ³‚ꂽ‚킯‚¾‚ªA‘Oq‚Ì’Ê‚èˆù‚Ýž‚Ü‚¸‚ÉPromise.catch()‚Å’Ê’m‚³‚ê‚é‚Í‚¸‚¾‚©‚ç
‚»‚¤‚¶‚á‚È‚¢‚Á‚Ä‚¢‚¤‚È‚ç

> ‚ÅAQ‚Æ‚©Bluebird‚¾‚Æ—áŠO‚ªˆù‚Ýž‚Ü‚ê‚é‚킯HƒR[ƒh‚ÅŽ¦‚¹‚éH

‚Æ>>33‚Åq‚Ë‚½‚킯‚¾
‚»‚̕Ԏ–‚ª>>34‚Ìu>>30‚̉º‚Ì•û‚ÅŒ¾‚Á‚Ă邿v‚¾‚ÆŠ®‘S‚Ƀ‹[ƒv
‚Ü‚¸‚ÍŠm”F‚¾‚ªA

EQ‚Æ‚©Bluebird‚ł͗áŠO‚ªˆù‚Ü‚ê‚é

‚Á‚ÄŽå’£‚µ‚Ä‚é‚ñ‚¾‚æ‚ÈH
‚»‚ê‚È‚ç‚Ç‚¤‚¢‚¤ƒP[ƒX‚Å‚»‚¤‚È‚é‚Ì‚©—á‚ðŽ¦‚µ‚Ä‚­‚ê
Promise.catch()‚É“`‚í‚ç‚È‚¢ƒP[ƒX‚ª‚à‚µ‚ ‚é‚È‚çA‚¨‚»‚ç‚­‚»‚ê‚Í‚½‚¾‚̃oƒO‚¾

48 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/04(“ú) 19:14:35.42 ID:w9Cj0tkO.net]
Javascript‚ÆPHP‚Å‚¾‚¢‚½‚¢‚Ì‚±‚Ƃ̓Jƒo[‰Â”\‚Æ‚¢‚¤”Fޝ‚Å‚¨‚‹‚Å‚µ‚傤‚©H

49 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 19:32:10.48 ID:zyY9pL0A.net]
MySQL‚©SQLite‚à—~‚µ‚¢

50 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 20:18:20.57 ID:w9Cj0tkO.net]
‚â‚Í‚èMySQL‚ª‚È‚¢‚ƕЎ藎‚¿‚Ȃ̂ł·‚Ë
‚Ç‚¤‚à‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·



51 –¼‘OF23 mailto:sage [2015/01/04(“ú) 20:31:31.22 ID:LcMrfHes.net]
>>34,43
>Schedules to run handler immediately after user agent events have been flushed.
>user agent events‚Á‚ĂȂñ‚¾H
‚±‚±‚ÅŒ¾‚Á‚Ä‚¢‚éuser agent events‚ÍHTML—v‘f‚Ìon`‘®«‚ÉŽw’肵‚½ƒCƒxƒ“ƒgƒnƒ“ƒhƒ‰ŠÖ”‚Ý‚½‚¢‚¾‚ËB
1Í‚ÌIntroduction‚Åuuser agent events‚Ì’†‚ʼnæ–Ê‚ð‘‚«Š·‚¦‚邿‚¤‚Ȉ—‚ð‘‚¢‚ÄA
‚»‚ÌŒã‚̈—‚ðs‚¤‘O‚É‚»‚Ì•ÏX‚ð‰æ–Ê‚É”½‰f‚³‚¹‚½‚¢‚Æ‚«‚ÉA¡‚܂łÍsetTimeout(fn,0)‚ð
Žg‚Á‚Ä‚½‚¾‚낤‚¯‚ÇA‚»‚ꂾ‚Æ’x‰„‚ª”­¶‚·‚é‚©‚çsetImmediate‚ăƒ\ƒbƒh‚ð’è‹`‚·‚邿v
‚Á‚ĂȊ´‚¶‚Ì‚±‚Æ‚ª‘‚¢‚Ä‚ ‚éB

>> ‚»‚±‚Í‚±‚ÌNotes‚É‘‚¢‚Ä‚ ‚é"platform code"‚©‚çD‚«‚È‚à‚̂ɒu‚«Š·‚¦‚Ä‚­‚ê
>’u‚«Š·‚¦‚ĉ½‚¾‚æH
Notes ‚Ì‹Lq‚ÉA
This can be implemented with either a "macro-task" mechanism such as setTimeout or setImmediate,
or with a "micro-task" mechanism such as MutationObserver or process.nextTick.
u‚±‚ê‚ÍAsetTimeout,‚âsetImmediate (hƒ}ƒNƒƒ^ƒXƒNh‹@\jA‚Ü‚½‚ÍMutationObserver‚âprocess.nextTick
i"ƒ}ƒCƒNƒƒ^ƒXƒN"‹@\j‚ðŽg‚Á‚Ä‚àŽÀ‘•‚Å‚«‚邿v
‚Á‚Ä‘‚¢‚Ä‚ ‚é‚ËB‚±‚Ì’†‚̂ǂê‚ðŽg‚Á‚Ä’u‚«Š·‚¦‚Ä‚àŽÀŒ»‚Å‚«‚邯‚¢‚¤‚±‚Æ‚¾‚ËB

—áŠOˆ—‚ɂ‚¢‚Ä‚à>>44‚Ì’Ê‚è‚ÅA‚»‚êˆÈã‚ÉŒ¾‚¤‚ׂ«‚±‚Ƃ͂Ȃ¢‚©‚ÈB
‚½‚¾ƒfƒoƒbƒK‚Æ‚©ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚Æ‚©‚ÌŒ¾—t‚ªo‚Ä‚¢‚½‚©‚çA
•K—vˆÈã‚ɓ‚­l‚¦‚Ä‚¢‚½‚ñ‚¶‚á‚È‚¢‚©‚Æ‚¢‚¤‹C‚ª‚µ‚È‚¢‚Å‚à‚È‚¢B

52 –¼‘OF23 mailto:sage [2015/01/04(“ú) 20:43:54.20 ID:LcMrfHes.net]
>>43
>‚½‚Æ‚¦‚ÎQ‚Í‚±‚̕ӂÅ"platform code"‚ðŒÄ‚Ñ•ª‚¯‚Ä‚é (ƒ‚ƒ_ƒ“ƒuƒ‰ƒEƒU‚¾‚ÆpostMessage()‚ªŽg‚í‚ê‚Ä‚é‚È)
MessageChannel ’m‚ç‚ñ‚©‚Á‚½BBB
node.js ‚Å‚Í process.nextTickAƒuƒ‰ƒEƒU‚Å‚Í setTimeout ‚ÆŽg‚¢•ª‚¯‚邾‚¯‚¾‚Á‚½‚æB
•׋­‚ɂȂÁ‚½AƒTƒ“ƒNƒXB

53 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 20:59:25.50 ID:CtgO5+tK.net]
>>44
> Promise‚ðŽg‚í‚È‚¢ê‡‚Å‚ànode‚Ì—¬‹V‚È‚çƒR[ƒ‹ƒoƒbƒN‚Ì‘æ1ˆø”‚Å’Ê’m‚·‚é
’Ê’m‚µ‚Ä‚àŒÄ‚Ño‚µ‘¤‚ªƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ«‚áˆÓ–¡‚È‚¢‚¾‚ë
•ʂɃnƒ“ƒhƒŠƒ“ƒO‚µ‚½‚«‚árejectj‚ðƒnƒ“ƒhƒŠƒ“ƒO‚·‚è‚á‚¢‚¢‚ñ‚¾‚æAƒAƒz‚©

‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠO‚Å‚à“à‘ Promise‚È‚çƒfƒoƒbƒK‚ª
‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ð’Ê’m‚µ‚Ä‚­‚ê‚é‚Á‚ÄŽ–‚ðŒ¾‚Á‚Ä‚ñ‚Ì‚É
‚¨‘O‚͂Ȃñ‚Å•ª‚©‚ñ‚È‚¢‚ñ‚¾‚æƒ}ƒW‚Å–³”\‚¾‚È

54 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 21:02:03.05 ID:CtgO5+tK.net]
>>44
‚¨‘O‚ªPromiseŽg‚Á‚ăvƒƒOƒ‰ƒ€‚È‚ñ‚©‚µ‚½Ž–‚È‚¢ƒh‘fl‚Ȃ͕̂ª‚©‚Á‚½‚æ
‚¶‚á‚È‚«‚áA‚»‚ñ‚ÈŽ–Œ¾‚¤–ó‚È‚¢‚µ
•’ʂ͂»‚¤‚¾‚ËA‚ÅI‚í‚é˜b‚µ‚ðAƒhƒAƒz‚Ì‚¨‘O‚ªƒoƒJ‚Ý‚½‚¢‚ɓ˂Á‚±‚ñ‚ł邾‚¯‚Ȃ̂ð
ƒIƒŒ‚ª‰É‚¾‚©‚瑊Žè‚µ‚Ă邾‚¯‚¾‚æ

55 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 22:08:03.31 ID:NffMCEWR.net]
‰É‚È‚ç‚à‚¤­‚µ‘ŠŽè‚µ‚Ä‚à‚炨‚¤‚©
‚Ü‚¸

> E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é

‚±‚ꂪJS‚ÅŽÀ‘•‚Å‚«‚È‚¢‚Á‚ÄŽå’£‚͊ԈႢ‚¾‚Á‚½‚Æ‚¢‚¤‚±‚Ƃł¢‚¢‚Ì‚©H
ŽŸ‚É

> Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é

u‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠOv‚ðƒfƒoƒbƒO‚Å‚«‚é‚Ì‚Í“à‘ PromiseŠÖŒW‚È‚­
JSˆ—Œn(Chrome‚È‚çv8)‚̃fƒoƒbƒK‚Ì‹@”\‚¾‚ë
node‚Å‚àv8‚̃fƒoƒbƒK‚Í—LŒø‚¾‚©‚çnode debug x.js‚ÅŽÀs‚µ‚ÄbreakOnException‚µ‚Ä‚¨‚¯‚Î
u‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠOv‚ŃuƒŒ[ƒN‚·‚é
node‚Íprocess.on('uncaughtException')‚ª‚ ‚é‚©‚ç‚»‚ê‚ŃfƒoƒbƒKŽg‚¤‹@‰ï‚Í­‚È‚¢‚¯‚Ç‚È
‚¾‚ª‚±‚̘bƒ}ƒW‚ÅPromiseŠÖŒW‚È‚­‚ËH

‚‚©uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—áŠOv‚łȂ­uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢reject (uncaught promise rejections)v
‚̃fƒoƒbƒO‚ðŒ¾‚Á‚Ä‚é‚Ì‚©H
‚¾‚Æ‚·‚邯‘S‘R˜b‚ªˆá‚¤‚ªAdebugger•¶‚ðŽg‚¦‚Î“à‘ Promise‚¶‚á‚È‚­‚Ä‚àŽÀ‘•‚͂ł«‚é‚È

> ‚¨‘O‚͂Ȃñ‚Å•ª‚©‚ñ‚È‚¢‚ñ‚¾‚æƒ}ƒW‚Å–³”\‚¾‚È

‚¨‘OˆÈŠO’N‚à‚¨‘O‚ÌŒ¾‚Á‚Ă邱‚Æ‚ð—‰ð‚Å‚«‚ĂȂ¢‚ñ‚¶‚á‚È‚¢‚©Hw
‚Å‚«‚Ä‚él‚ª‚¢‚é‚È‚çƒ}ƒW‚Å–|–󂵂Ă­‚ê

‚ ‚Ɖ´‚ÍECMA“ü‚è‘O‚ðŠÜ‚߂邯2012”N ‚©‚çPromiseŽg‚Á‚Ä‚é
‚½‚¾‚µnode‚ł̘b‚¾‚©‚çƒuƒ‰ƒEƒUŒÅ—L‚̘b‚Í’m‚ç‚È‚¢‰Â”\«‚Í‚‚¢
‚±‚±‚̓T[ƒoƒTƒCƒhJSƒXƒŒ‚È‚ñ‚¾‚©‚ç‚»‚̕ӂ͂¨‘O‚Ì•û‚ªl—¶‚µ‚Ä‚­‚ê

56 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 22:36:38.77 ID:NffMCEWR.net]
‚¹‚Á‚©‚­‚Ȃ̂ŋï‘Ì“I‚É
‚±‚¤‚¢‚¤ƒR[ƒh(x.js)‚ª‚ ‚邯‚·‚é‚¶‚á‚ë

process.nextTick(function() {
@throw new Error('unhandle');
});

‚±‚¤‚â‚Á‚ÄŽÀs‚·‚é‚¶‚á‚ë

$ node debug x.js
< Debugger listening on port 5858
connecting to port 5858... ok
break in x.js:1
> 1 process.nextTick(function() {
@2 throw new Error('unhandle');
@3 });

1s–Ú‚ÅŽ~‚Ü‚Á‚Ă邩‚炨‚Ü‚¶‚È‚¢‚𥂦‚é‚¶‚á‚ë

debug> breakOnException

ŽÀsÄŠJ‚·‚é‚¶‚á‚ë

debug> c
exception in x.js:2
Error: unhandle
@1 process.nextTick(function() {
> 2 throw new Error('unhandle');
@3 });
debug>

ƒnƒ“ƒhƒ‹‚³‚ê‚ĂȂ¢—áŠO‚Ì‚¹‚¢‚Å2s–Ú‚ÅŽ~‚Ü‚Á‚½‚¶‚á‚ë

57 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/04(“ú) 23:45:19.91 ID:NffMCEWR.net]
‚Æ‚±‚ë‚Åuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚̃fƒoƒbƒO‚Á‚Ä
ÅV‚̃uƒ‰ƒEƒU‚ł̓Tƒ|[ƒg‚³‚ê‚Ä‚é‚Ì‚©H
‚½‚Æ‚¦‚Î

Promise.resolve(true).then(function(v) {
@throw new Error('then');
}).catch(function(e) {
@console.log(e);
});

‚ÆÅŒã‚Écatch()‚·‚ׂ«‚Æ‚±‚ë‚ð–Y‚ê‚Ä‚µ‚Ü‚Á‚Ä

Promise.resolve(true).then(function(v) {
@throw new Error('then');
});

‚Æ‚µ‚½ê‡A‚±‚ê‚ðChromeˆÀ’è”Å(39)‚ÅŽÀs‚µ‚Ä‚àƒuƒŒ[ƒN‚µ‚È‚¢
ƒXƒ[‚µ‚½—áŠO‚Í“à‘ Promise‚ÌŽÀ‘•‚Åcatch‚µ‚Ă邩‚çv8‚©‚猩‚邯
ƒnƒ“ƒhƒ‹‚³‚ê‚Ä‚é‚Á‚Ĉµ‚¢‚È‚ñ‚¾‚낤
ChromeŠJ”­”ł⑼‚̃uƒ‰ƒEƒU‚¾‚ƃuƒŒ[ƒN‚·‚é‚Ì‚©H

58 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 09:46:01.36 ID:mZODWVt6.net]
>>50
‰¡‚©‚玸—çA‰´‚à“Ç‚ñ‚łĈӖ¡‚í‚©‚ç‚È‚¢‚©‚玿–₳‚¹‚Ä‚­‚ê

„‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠO‚Å‚à“à‘ Promise‚È‚çƒfƒoƒbƒK‚ª
„‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ð’Ê’m‚µ‚Ä‚­‚ê‚é‚Á‚ÄŽ–‚ðŒ¾‚Á‚Ä‚ñ‚Ì‚É
„‚¨‘O‚͂Ȃñ‚Å•ª‚©‚ñ‚È‚¢‚ñ‚¾‚æƒ}ƒW‚Å–³”\‚¾‚È
“à‘ŸPromise‚Ì—˜“_‚̓fƒoƒbƒK‚ª‹C‚𗘂©‚¹‚Ä—áŠO’Ê’m‚ð‚µ‚Ä‚­‚ê‚éA‚Ɠǂ߂é‚ñ‚¾‚¯‚ÇA‚‚܂軕i‚ÉŽg‚¤‚ÆŸŽè‚ɃfƒoƒbƒK‚ª“®‚¢‚Ä‚éó‘ԂɂȂ邩‚çŠJ”­ŽžˆÈŠO‚ÍŽg‚Á‚¿‚á‚¢‚¯‚È‚¢‚Á‚ÄŽ–‚ÅOKH
‚»‚ê‚Æ‚àPromise‚ɂ͉½‚ç‚©‚̃fƒoƒbƒK‚ª“à‘Ÿ‚³‚ê‚Ä‚¢‚銴‚¶‚Ȃ̂©‚ÈH‚à‚µ‚»‚¤‚¾‚Æ‚µ‚ÄAƒfƒoƒbƒK‚ª“®ì‚µ‚Ă邱‚Æ‚ð‘O’ñ‚ŃR[ƒh‚ð‘g‚Þ‚Ì‚ªPromise‚ÌŽg‚¢•û‚Á‚ÄŽ–H

‚à‚µ‘OŽÒ‚È‚ç(“Á‚É«—ˆ“I‚É)Žd—l‚ª‚Ç‚¤‚Ȃ邩‚͊‹«ˆË‘¶‚Á‚ÄŽ–‚ɂȂ邩‚çAPromise‚ÍŽg‚Á‚Ă͂¢‚¯‚È‚¢‚ñ‚¶‚á‚È‚¢‚¾‚낤‚©H

59 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 12:38:50.48 ID:A9O4oHD7.net]
–Ê“|‚¾‚ª‚±‚¤‚È‚Á‚½‚炵‚傤‚ª‚È‚¢­‚µ•t‚«‡‚Á‚Ä‚â‚é

>>52
> > E“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŠmŽÀ‚É”ñ“¯Šú‚ÅŽÀs‚·‚é
>
> ‚±‚ꂪJS‚ÅŽÀ‘•‚Å‚«‚È‚¢‚Á‚ÄŽå’£‚͊ԈႢ‚¾‚Á‚½‚Æ‚¢‚¤‚±‚Ƃł¢‚¢‚Ì‚©H
setImmediate()‚ÌŽd—l‚ÍA“n‚³‚ꂽƒR[ƒ‹ƒoƒbƒN‚ðŽŸ‚ÌJavaScript‚Ì–½—ß‚ªŠmŽÀ‚ÉŽÀs‚³‚ꂽŒã‚É
ŽÀs‚·‚邯‚͓ǂ߂Ȃ©‚Á‚½‚ªA‚à‚µ“à•”‚ÌŽÀ‘•‚ª‚»‚¤‚È‚Á‚Ä‚é‚̂ł ‚ê‚ÎAsetImmediate()‚Å
ŽÀ‘•‚Å‚«‚邿
‚½‚¾‚µA–{“–‚É“à•”‚ÌŽÀ‘•‚ª‚»‚¤‚È‚Á‚Ă邩‚Ç‚¤‚©‚Í‚¨‘O‚ªŠm”F‚µ‚Ä•ñ‚µ‚ë

> ChromeŠJ”­”ł⑼‚̃uƒ‰ƒEƒU‚¾‚ƃuƒŒ[ƒN‚·‚é‚Ì‚©H
’Êí‚ÌChrome‚ÆFirefox‚ŃuƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½

>>55
> ‚‚܂軕i‚ÉŽg‚¤‚ÆŸŽè‚ɃfƒoƒbƒK‚ª“®‚¢‚Ä‚éó‘ԂɂȂ邩‚çŠJ”­ŽžˆÈŠO‚ÍŽg‚Á‚¿‚á‚¢‚¯‚È‚¢‚Á‚ÄŽ–‚ÅOKH
ƒfƒoƒbƒK‚Í•’ʂ̃uƒ‰ƒEƒWƒ“ƒOŽž‚ɂ͗LŒø‚ɂȂÁ‚ĂȂ¢‚æ
—LŒø‚É‚·‚é‚ɂ̓uƒ‰ƒEƒU‚²‚Ƃɂâ‚è•û‚ªˆá‚¤‚©‚玩•ª‚Å’²‚ׂĂ­‚ê

60 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 20:40:46.70 ID:xBMPeqox.net]
>56
> ‚½‚¾‚µA–{“–‚É“à•”‚ÌŽÀ‘•‚ª‚»‚¤‚È‚Á‚Ă邩‚Ç‚¤‚©‚Í‚¨‘O‚ªŠm”F‚µ‚Ä•ñ‚µ‚ë

process.nextTick()‚àsetImmediate()‚àsetTimeout()‚à‚»‚¤‚È‚Á‚Ă邿
‚ǂ̊֔‚àreturn‚µ‚Č㑱‚̃R[ƒh‚ªŽÀs‚³‚ê‚ăCƒxƒ“ƒgƒ‹[ƒv‚ɖ߂邿‚è‘O‚É
ƒR[ƒ‹ƒoƒbƒN‚ªŒÄ‚΂ê‚邱‚Ƃ͂Ȃ¢

> > ChromeŠJ”­”ł⑼‚̃uƒ‰ƒEƒU‚¾‚ƃuƒŒ[ƒN‚·‚é‚Ì‚©H
> ’Êí‚ÌChrome‚ÆFirefox‚ŃuƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½

>>54‚ªˆø—p‚³‚ê‚Ă邪A‚»‚ê‚Í‚¨‘O‚ÌŒ¾‚¤uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠOv
‚Ƃ͕ʂÌuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚̘b‚¾‚¼
>>54‚̈ês–Ú‚É‚»‚¤‘‚¢‚Ä‚ ‚邾‚ë

‚»‚ê‚æ‚è

> ‚Ü‚Á‚½‚­ƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—\Šú‚µ‚È‚¢—áŠO‚Å‚à“à‘ Promise‚È‚çƒfƒoƒbƒK‚ª
> ‹C‚ðŒø‚©‚¹‚Ä—áŠO‚ð’Ê’m‚µ‚Ä‚­‚ê‚é‚Á‚ÄŽ–‚ðŒ¾‚Á‚Ä‚ñ‚Ì‚É

‚ɂ‚¢‚Ä‹ï‘Ì“I‚ɃR[ƒh‚Å‚à‘‚¢‚Äà–¾‚µ‚Ä‚­‚ê‚æ
“ú–{Œê‚¶‚á‚܂Ƃà‚É’Ê‚¶‚ĂȂ¢‚ñ‚¾‚©‚ç‚»‚Ì•û‚ª‚¨ŒÝ‚¢Žè‚ÁŽæ‚è‘‚¢‚¾‚ëH



61 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 20:47:12.39 ID:xBMPeqox.net]
‚±‚ê‚Íuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚Æ‚µ‚ẴŒƒX

>>56
> ’Êí‚ÌChrome‚ÆFirefox‚ŃuƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½

‚Ü‚¸‚ÍŠm”F‚¾‚ªAChrome‚Å"Pause On Caught Exceptions"‚ÍŠO‚µ‚Ă邿‚ÈH
‚ ‚ê‚̓nƒ“ƒhƒŠƒ“ƒOu‚µ‚Ä‚év—áŠO‚Å‚àƒuƒŒ[ƒN‚·‚é‚©‚炱‚±‚ł͎ז‚‚ɂȂé
‚»‚Ìã‚ÅAreject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚é

Promise.resolve(true).then(function(v) {
@throw new Error('then');
}).catch(function(e) {
@console.log(e);
});

‚̓uƒŒ[ƒN‚µ‚È‚¢‚ªAreject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚È‚¢

Promise.resolve(true).then(function(v) {
@throw new Error('then');
});

‚̓uƒŒ[ƒN‚·‚é‚Ì‚ðŠm”F‚µ‚½A‚Æ‚¢‚¤‚±‚ƂŊԈႢ‚È‚¢‚©H

‰´‚ÌChrome 39‚ł͂ǂ¿‚ç‚àƒuƒŒ[ƒN‚µ‚È‚¢
(’Êí‚Ìuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢—áŠOv‚Í‚à‚¿‚ë‚ñƒuƒŒ[ƒN‚·‚é)
‚à‚µChrome‚Ìݒ肪•K—v‚Ȃ狳‚¦‚Ä—~‚µ‚¢

62 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 20:56:09.22 ID:xBMPeqox.net]
‚±‚ê‚àuƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚Æ‚µ‚ẴŒƒX
—áŠO‚ł͂Ȃ­reject‚̘b‚Æ‚¢‚¤‚±‚Æ‚ª‚æ‚è–¾Šm‚É‚È‚é‚æ‚¤‚ɃR[ƒh‚ðC³‚µ‚½

reject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚é

Promise.resolve(true).then(function(v) {
@return Promise.reject(new Error('then'));
}).catch(function(e) {
@console.log(e);
});

‚̓uƒŒ[ƒN‚µ‚È‚¢‚ªAreject‚ðƒnƒ“ƒhƒŠƒ“ƒO‚µ‚Ä‚¢‚È‚¢

Promise.resolve(true).then(function(v) {
@return Promise.reject(new Error('then'));
});

‚̓uƒŒ[ƒN‚·‚é‚Ì‚©H

‚¿‚Ȃ݂ÉQ‚ðŽg‚¤ê‡‚ÍQ.getUnhandledReasons()‚Å
uƒnƒ“ƒhƒŠƒ“ƒO‚µ‚ĂȂ¢rejectv‚̈ꗗ‚ðŽæ“¾‚Å‚«‚é
node‚Å‚ÍsetInterval()‚Å’èŠú“I‚ɃƒOo—Í‚·‚ê‚΃fƒoƒbƒK‚Ì•K—v«‚Í’á‚¢

63 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 22:13:35.53 ID:gHiAPMtv.net]
>>57
> process.nextTick()‚àsetImmediate()‚àsetTimeout()‚à‚»‚¤‚È‚Á‚Ă邿
’²‚×‚à‚¹‚¸‚É“K“–‚ÈŽ–Œ¾‚¤‚È‚æ
­‚È‚­‚Æ‚àsetTimeout()‚Íâ‘ΈႤ

‘¼‚Í“ú–{Œê‚ªˆÓ–¡•s–¾
Promise.resolve(true).then(function(v) {
@throw new Error('then'); © ‚±‚±‚ŃfƒoƒbƒK‚ªƒuƒŒ[ƒN‚·‚é
});
ƒAƒz‚È‚¨‘O‚Í‚±‚ê‚Å‚à—‰ðo—ˆ‚È‚¢‚ÆŽv‚¤‚ªA‰´‚Í‚±‚êˆÈãà–¾‚µ‚È‚¢

> node‚Å‚ÍsetInterval()‚Å’èŠú“I‚ɃƒOo—Í‚·‚ê‚΃fƒoƒbƒK‚Ì•K—v«‚Í’á‚¢
•³‚Ý‚½‚¢‚È•‰‚¯É‚µ‚Ý‚·‚ñ‚È‚æw

64 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 22:22:33.23 ID:gHiAPMtv.net]
> ­‚È‚­‚Æ‚àsetTimeout()‚Íâ‘ΈႤ
•ß‘¨‚·‚邪ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ð1ms‚Æ‚©‚É‚·‚ê‚ÎA99.9%ŽÀ—pã–â‘è–³‚¢‚¾‚낤
‚¾‚ªuŠmŽÀv‚É”ñ“¯Šú‚É‚·‚邯‚¢‚¤Ž–‚Ƃ͑S‚­ˆÓ–¡‚ªˆá‚¤

>>58
> ‚à‚µChrome‚Ìݒ肪•K—v‚Ȃ狳‚¦‚Ä—~‚µ‚¢
ƒfƒoƒbƒK‚̃fƒtƒHÝ’è‚ł͈ù‚Ýž‚Ü‚ê‚Ä–³”½‰ž‚¾
‚³‚ñ‚´‚ñƒPƒ`‚‚¯‚Ă銄‚ɂ͂»‚ñ‚ÈŠÈ’P‚ÈÝ’è‚à•ª‚©‚ç‚ñ‚©
‚½‚¾AŒƒ‚µ‚­ƒXƒŒƒ`‚ÈŽ–‚È‚ñ‚Å–³—‚à‚È‚¢‚©‚ç‚»‚ë‚»‚ë–Ù‚Á‚Ä‚­‚ê

65 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:31:48.05 ID:xBMPeqox.net]
>>60
> ’²‚×‚à‚¹‚¸‚É“K“–‚ÈŽ–Œ¾‚¤‚È‚æ

’²‚ׂȾ‚Á‚Ă邯‚ÇH
‚Ü‚¸‚ÍŽd—l

https://html.spec.whatwg.org/multipage/webappapis.html#timers

"timer initialisation steps"‚Ì10‚Å"Return handle, and then continue running this algorithm in parallel."
‚ƂȂÁ‚Ä‚¢‚ÄAƒR[ƒ‹ƒoƒbƒN‚ªŒÄ‚Ño‚³‚ê‚é‚Ì‚Í14‚Ì"Queue the task task."‚É‚æ‚Á‚Ä‚¾
‚»‚µ‚ÄNode‚ÌŽÀ‘•

https://github.com/joyent/node/blob/v0.10/lib/timers.js#L194

203s–Ú‚ÅTimeoutƒIƒuƒWƒFƒNƒg‚ðì‚Á‚Ä225s–Ú‚Åactive()‚É“n‚µ‚Ä‚é
175s–Ú‚©‚ç‚Ìactive()‚ÍƒŠƒXƒg‚ÉTimeoutƒIƒuƒWƒFƒNƒg‚ð’ljÁ‚µ‚Ă邾‚¯
‚Ç‚¤‚â‚Á‚Ä‚àsetTimeout()‚ªreturn‚·‚é‘O‚ɃR[ƒ‹ƒoƒbƒN‚ªŒÄ‚΂ê‚邱‚Ƃ͂Ȃ¢

> ­‚È‚­‚Æ‚àsetTimeout()‚Íâ‘ΈႤ

‚»‚̪‹’‚ÍH ‚¨‘O‚ÍŽå’£‚·‚é‚΂Á‚©‚Ū‹’‚͉½‚àŽ¦‚³‚È‚¢‚Ì‚È

>>61
> •ß‘¨‚·‚邪ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ð1ms‚Æ‚©‚É‚·‚ê‚ÎA99.9%ŽÀ—pã–â‘è–³‚¢‚¾‚낤
> ‚¾‚ªuŠmŽÀv‚É”ñ“¯Šú‚É‚·‚邯‚¢‚¤Ž–‚Ƃ͑S‚­ˆÓ–¡‚ªˆá‚¤

‚¨‘Ou”ñ“¯Šúv‚̈Ӗ¡‚í‚©‚Á‚Ä‚éH ƒ^ƒCƒ€ƒAƒEƒgŽžŠÔ‚Í”ñ“¯Šú‚Æ‚ÍˆêØŠÖŒW‚È‚¢‚¼
setTimeout()‚Íí‚ɃR[ƒ‹ƒoƒbƒN‚ð”ñ“¯Šú‚ÉŽÀs‚·‚é
‚½‚¾‚µƒR[ƒ‹ƒoƒbƒN‚ªŽÀs‚³‚ê‚é‚܂ł̎žŠÔ‚ÍŽw’肵‚½‚Æ‚¨‚è‚É‚È‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚¾‚¯‚¾
“Á‚ɃlƒXƒg‚µ‚½ŒÄ‚Ño‚µ‚Å‚Í0`3ms‚ðŽw’肵‚Ä‚àÅ’á4ms‚͑҂½‚³‚ê‚é(ã‚ÌŽd—l‚É‘‚¢‚Ä‚ ‚é)
‚¾‚ªí‚É”ñ“¯Šú‚¾

66 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:36:20.18 ID:xBMPeqox.net]
>>60
> ‘¼‚Í“ú–{Œê‚ªˆÓ–¡•s–¾

‚¨ŒÝ‚¢‚É‚Èw ‚Å‚àJS‚̃R[ƒh‚Í•ª‚©‚Á‚½‚¾‚ëH
‚¾‚©‚炨‘O‚ªŒ¾‚¢‚½‚¢‚±‚Æ‚àƒR[ƒh‚ÅŽ¦‚µ‚Ä‚­‚ê‚Á‚ĉ½“x‚àŒ¾‚Á‚Ä‚é‚킯‚¾
‚È‚ñ‚ŃR[ƒh‚Å‘‚©‚È‚¢‚ñ‚¾H

> Promise.resolve(true).then(function(v) {
> @throw new Error('then'); © ‚±‚±‚ŃfƒoƒbƒK‚ªƒuƒŒ[ƒN‚·‚é
> });

‚»‚ꂾ‚¯‚¾‚Æ"Pause On Caught Exceptions"‚ð—LŒø‚É‚µ‚Ă邿‚¤‚É‚µ‚©Œ©‚¦‚È‚¢‚È
‚»‚ÌꇃuƒŒ[ƒN‚·‚é‚Ì‚Í“à‘ PromiseˆêØŠÖŒW‚È‚¢‚©‚ç‚È
catch()‚µ‚Ä‚éƒP[ƒX‚ł͂ǂ¤‚È‚ñ‚¾H ƒuƒŒ[ƒN‚µ‚¿‚Ⴄ‚ñ‚¶‚á‚Ë[‚ÌH
>>59‚ÌPromise.reject()”łłàƒuƒŒ[ƒN‚·‚é‚Ì‚©H ‚µ‚È‚¢‚ñ‚¶‚á‚Ë[‚ÌH

> ƒAƒz‚È‚¨‘O‚Í‚±‚ê‚Å‚à—‰ðo—ˆ‚È‚¢‚ÆŽv‚¤‚ªA‰´‚Í‚±‚êˆÈãà–¾‚µ‚È‚¢

‚»‚ꂱ‚»•‰‚¯É‚µ‚Ý‚¾‚ëw
u‚µ‚È‚¢v‚¶‚á‚È‚­‚Äu‚Å‚«‚È‚¢v‚ñ‚¶‚á‚Ë[‚ÌH

> > node‚Å‚ÍsetInterval()‚Å’èŠú“I‚ɃƒOo—Í‚·‚ê‚΃fƒoƒbƒK‚Ì•K—v«‚Í’á‚¢
> •³‚Ý‚½‚¢‚È•‰‚¯É‚µ‚Ý‚·‚ñ‚È‚æw

ŒJ‚è•Ô‚·‚¯‚Ç‚±‚±‚̓T[ƒoƒTƒCƒhJSƒXƒŒ‚È‚ñ‚Å‚È
“®‚©‚µ‚Á‚ςȂµ‚̃T[ƒo‚ł̓ƒMƒ“ƒO‚µ‚Ä’²‚ׂé•û‚ªŠî–{‚È‚ñ‚¾‚æ
‚Ô‚Á‚¿‚Ⴏ‚±‚̃XƒŒ‚Å‚àNode‚ŃfƒoƒbƒK•’iŽg‚¢‚µ‚Ă郄ƒc‚Ì•û‚ª­””h‚¶‚á‚ËH
‘¼‚Ìl‚Ç‚¤‚æH

67 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:38:49.17 ID:xBMPeqox.net]
>>61
> ƒfƒoƒbƒK‚̃fƒtƒHÝ’è‚ł͈ù‚Ýž‚Ü‚ê‚Ä–³”½‰ž‚¾
> ‚³‚ñ‚´‚ñƒPƒ`‚‚¯‚Ă銄‚ɂ͂»‚ñ‚ÈŠÈ’P‚ÈÝ’è‚à•ª‚©‚ç‚ñ‚©

‚í‚©‚ç‚ñ‚È
—Š‚Þ‚©‚狳‚¦‚Ä‚­‚ê‚æ
ø‚邿‚è­‚È‚¢•¶Žš”‚ÅI—¹‚·‚邾‚ë

> ‚½‚¾AŒƒ‚µ‚­ƒXƒŒƒ`‚ÈŽ–‚È‚ñ‚Å–³—‚à‚È‚¢‚©‚ç‚»‚ë‚»‚ë–Ù‚Á‚Ä‚­‚ê

‰½‚ð¡Xw
>>55‚Æ‚©‘¼‚Ìl‚à‹»–¡‚ ‚é‚©‚à‚µ‚ê‚È‚¢‚¾‚ë
‚»‚ñ‚ÈŠÈ’P‚ÈÝ’è‚Ȃ炳‚Á‚³‚Æ‘‚¢‚Ä‚­‚ê‚æ

68 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:41:57.54 ID:gHiAPMtv.net]
>>62
This API does not guarantee that timers will run exactly on schedule.
‚Á‚Ä‘‚¢‚Ä‚ ‚é
‚¢‚ÂŽÀs‚³‚ê‚é‚©•ÛØ‚µ‚ĂȂ¢‚¶‚á‚ñ
ã‚Ì•û‚Ìa += 1;‚ðŽÀs‚·‚é‚܂łÉ100ms‚ÌŽžŠÔ‚ªŠ|‚©‚Á‚½‚Æ‚·‚邯A‚»‚Ì‘O‚ÉŽÀs‚³‚ê‚é‰Â”\«‚ª‚ ‚é

69 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:57:22.85 ID:gHiAPMtv.net]
ÌWebkit‚©Firefox‚ÌPromise‚ÌŽÀ‘•‚ðŒ©‚½Žž‚ÉA‚±‚ê‚Å”ñ“¯Šú‚É‚µ‚Ä‚ñ‚Ì‚©‚ÆŽv‚Á‚½Ž–‚ª‚ ‚Á‚½‹C‚ª‚·‚é‚©‚ç
‚Ƃ肠‚¦‚¸ƒ\[ƒX‚ð‚ ‚½‚Á‚½‚݂邩‚ç‘Ò‚Á‚Ä‚ë
‚»‚ê‚Å‘S‚Ä‰ðŒˆ‚¾
ƒ\[ƒX‚𗎂Ƃ·‚ɂ͖Œƒ‹ê’ƒŽžŠÔŠ|‚©‚邵Aƒuƒ‰ƒEƒU‚Å’T‚·‚É‚µ‚Ä‚àŽžŠÔ‚ªŠ|‚©‚é

> ‚í‚©‚ç‚ñ‚È
> —Š‚Þ‚©‚狳‚¦‚Ä‚­‚ê‚æ
ƒfƒxƒƒbƒp[ƒc[ƒ‹‚ðo‚µ‚Ĉê”Ô‰E‚É‚ ‚镊ۂÉc“ñdü‚ÌPause on exceptions‚ð‰Ÿ‚µ‚Æ‚¢‚ÄƒŠƒ[ƒh‚¾‚æ

70 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/05(ŒŽ) 23:59:55.31 ID:xBMPeqox.net]
>>65
> ‚¢‚ÂŽÀs‚³‚ê‚é‚©•ÛØ‚µ‚ĂȂ¢‚¶‚á‚ñ

‚»‚ꉴ‚ª‘‚¢‚½

> ‚½‚¾‚µƒR[ƒ‹ƒoƒbƒN‚ªŽÀs‚³‚ê‚é‚܂ł̎žŠÔ‚ÍŽw’肵‚½‚Æ‚¨‚è‚É‚È‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚¾‚¯‚¾

‚Ì‚±‚Æ‚È

> ã‚Ì•û‚Ìa += 1;‚ðŽÀs‚·‚é‚܂łÉ100ms‚ÌŽžŠÔ‚ªŠ|‚©‚Á‚½‚Æ‚·‚邯A‚»‚Ì‘O‚ÉŽÀs‚³‚ê‚é‰Â”\«‚ª‚ ‚é

‚»‚̉”\«‚͂Ȃ¢‚ñ‚¾‚æ
ƒXƒeƒbƒv‚Ì10‚ÅƒŠƒ^[ƒ“‚µ‚½uŒãvAŽc‚è‚̃Xƒeƒbƒv‚Í•À—ñ‚ÉŽÀs‚³‚ê‚é‰Â”\«‚ª‚ ‚é
‚»‚̈ê‚‚̃Xƒeƒbƒv14‚ŃR[ƒ‹ƒoƒbƒN‚ðŽÀs‚·‚éƒ^ƒXƒN‚ªƒLƒ…[‚É“ü‚ê‚ç‚ê‚é
ƒ^ƒXƒN‚̓Lƒ…[‚É“ü‚ê‚ç‚ê‚邾‚¯‚ÅŽÀs‚Í‚³‚ê‚È‚¢
‚»‚µ‚Ä‚»‚̃^ƒXƒN‚ªƒLƒ…[‚©‚çŽæ‚èo‚³‚ê‚ÄŽÀs‚³‚ê‚é‚̂ͧŒä‚ªƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚Á‚½Œã‚¾
‚¨‘O‚ÌŒ¾‚¤a += 1;‚ÌŽÀs‚ªI‚í‚ç‚È‚¢ŒÀ‚觌䂪ƒCƒxƒ“ƒgƒ‹[ƒv‚ɖ߂邱‚Ƃ͂Ȃ¢
‚¾‚©‚çsetTimeout()‚̓^ƒCƒ€ƒAƒEƒgŽžŠÔ‚ÉˆêØŠÖŒW‚È‚­í‚É”ñ“¯Šú‚¾
ÚׂÍ"14. Queue the task task."‚ÌƒŠƒ“ƒNæ‚ðŒ©‚Ä‚­‚ê

‚»‚ñ‚ȓ‚­l‚¦‚È‚­‚Ä‚àƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚È‚ñ‚¾‚©‚ç‚í‚©‚è‚»‚¤‚È‚à‚ñ‚¾‚ªw



71 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:14:54.50 ID:KFlyuGQs.net]
>>67
> ‚»‚µ‚Ä‚»‚̃^ƒXƒN‚ªƒLƒ…[‚©‚çŽæ‚èo‚³‚ê‚ÄŽÀs‚³‚ê‚é‚̂ͧŒä‚ªƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚Á‚½Œã‚¾
ƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚é‚Ì‚ÍsetTimeout()‚Ì’¼Œã‚̈ʒu‚¾ (a += 1;‚Ì‘O)

72 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:22:50.21 ID:oSSj0EiH.net]
>>66
> ƒfƒxƒƒbƒp[ƒc[ƒ‹‚ðo‚µ‚Ĉê”Ô‰E‚É‚ ‚镊ۂÉc“ñdü‚ÌPause on exceptions‚ð‰Ÿ‚µ‚Æ‚¢‚ÄƒŠƒ[ƒh‚¾‚æ

‚»‚ꕊۂÉc“ñdü‚ð‰Ÿ‚µ‚Äo‚Ä‚­‚éƒpƒlƒ‹‚É‚ ‚éƒ`ƒFƒbƒNƒ{ƒbƒNƒX‚Ì‚±‚Æ‚¾‚æ‚ÈH
‚»‚êuPause on exceptionsv‚¶‚á‚È‚­‚ÄuPause On Caught Exceptionsv‚¾‚æ‚ÈH
‰´‚ª‚±‚ê‚܂ő‚¢‚½«‘S‘R“Ç‚ñ‚łȂ©‚Á‚½‚Ì‚©wwwwww

>>58
> ‚Ü‚¸‚ÍŠm”F‚¾‚ªAChrome‚Å"Pause On Caught Exceptions"‚ÍŠO‚µ‚Ă邿‚ÈH
>>63
> ‚»‚ꂾ‚¯‚¾‚Æ"Pause On Caught Exceptions"‚ð—LŒø‚É‚µ‚Ă邿‚¤‚É‚µ‚©Œ©‚¦‚È‚¢‚È

"Pause On Caught Exceptions"‚Á‚Ä—LŒø‚É‚·‚邯

try {
@throw new Error('err'); //‚±‚±‚Å‚àƒuƒŒ[ƒN‚·‚éI
} catch (e) {
@console.log('handled');
}

‚±‚ñ‚Ȃ̂܂ŃuƒŒ[ƒN‚µ‚¿‚Ⴄ‘㕨‚Ȃ킯‚æ
“à‘ Promise‚ª‚Ç‚¤‚Æ‚©ˆêØŠÖŒW‚È‚­AŽ©‘O‚̃‰ƒCƒuƒ‰ƒŠ‚¾‚낤‚ª‚È‚ñ‚¾‚낤‚ª
‚Ç‚±‚Å‚à—áŠOƒXƒ[‚·‚邯ƒuƒŒ[ƒN‚·‚éƒIƒvƒVƒ‡ƒ“‚Ȃ킯‚¶‚á‚ñ
“à‘ Promise‚łȂ¢‚ÆŽÀ‘•‚Å‚«‚È‚¢‚Æ‚©‚Á‚Ęb‚Ɖ½‚ÌŠÖŒW‚È‚¢‚æ‚ÈH

>>24
> > Eˆù‚Ýž‚܂ꂽ—áŠO‚ðƒfƒoƒbƒOo—ˆ‚é
> ‚»‚è‚áAƒ‰ƒCƒuƒ‰ƒŠ“à•”‚Ìcatch“à‚ɃuƒŒ[ƒNƒ|ƒCƒ“ƒg‚𒣂Á‚đ҂¿‚©‚Ü‚¦‚Ä‚¢‚ê‚Î
> ‰Â”\‚¾‚ª–ˆ‰ñ‚»‚ñ‚ÈŽ–‚·‚ñ‚Ì‚©H‚¢‚â‚·‚é‚킯‚È‚¢
> ‚»‚µ‚Ä—áŠO‚ªƒXƒ‹[‚³‚ê‚ĉ½‚à‹N‚«‚È‚¢

ª‚Ìà–¾‚Í"Pause On Caught Exceptions"‚Æ–µ‚‚µ‚Ă邱‚Ƃ͂킩‚é‚©H

73 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:29:21.55 ID:oSSj0EiH.net]
>>68
> ƒCƒxƒ“ƒgƒ‹[ƒv‚É–ß‚é‚Ì‚ÍsetTimeout()‚Ì’¼Œã‚̈ʒu‚¾ (a += 1;‚Ì‘O)
‚ÍH ‚¦H ‚¦H

setTimeout(function() {
@...
}, 0);
// (a)
a += 1;

‚±‚¤‚¢‚¤ƒR[ƒh‚Å(a)‚̈ʒu‚ŃCƒxƒ“ƒgƒ‹[ƒv‚ɖ߂邯Žv‚Á‚Ä‚é‚킯H
‚¢‚â‚¢‚â‚¢‚âA‚¢‚­‚ç‚È‚ñ‚Å‚à‚»‚ê‚ÍBBB ‚ [

74 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:39:58.23 ID:KFlyuGQs.net]
>>69
‚ ‚Á‚»‚¤A‰´‚ÍFirefox‚µ‚©Žg‚Á‚ĂȂ¢‚©‚çChrome‚ÌŽ–‚Í‚»‚ê‚Å‚¢‚¢‚ÆŽv‚Á‚½‚æ
Firefox‚¾‚Æ
try {
@throw new Error('err'); // ‚±‚±‚ŃuƒŒ[ƒN‚µ‚È‚¢‚Å
} catch (e) {
@console.log('handled');
}
Promise.resolve(true).then(function(v) {
throw new Error('then'); // ‚±‚±‚ŃuƒŒ[ƒN‚·‚é
});
‚ɂȂé
‚à‚Í‚âV8‚Æ‚àŠÖŒW–³‚­‚Ĉ«‚¢‚Èw

75 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:44:09.33 ID:KFlyuGQs.net]
>>69
Chrome‚ÅPromise‚ðƒuƒŒ[ƒN‚³‚¹‚é•û–@‚Í–³‚¢‚Ì‚©‰½‚ç‚©‚Ì•û–@‚ª‚ ‚é‚Ì‚©’²‚ׂè‚­‚æ

76 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 00:48:43.95 ID:oSSj0EiH.net]
>>72
•ʂɂ¢‚¢‚æAŠJ”­”łŎæ‚è‘g‚ñ‚ł邩‚ç
https://code.google.com/p/v8/issues/detail?id=3093
https://code.google.com/p/chromium/issues/detail?id=393913

77 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 02:04:56.21 ID:KFlyuGQs.net]
‰´‚ªŠ¨ˆá‚¢‚µ‚Ä‚¢‚½
Promise‚ÌŽd—l“I‚ɃCƒxƒ“ƒgƒ‹[ƒv‚ª1‰ñˆÈã”­¶‚·‚鎖‚ð•ÛØ‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‚©‚ç
setTimeout()‚ł͊®‘S‚ł͂Ȃ¢‚Æ‚¢‚¤‚±‚Æ‚¾‚È
‚Í‚¢‚¨‚µ‚Ü‚¢

78 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 05:03:53.45 ID:D9r7QrzV.net]
‚Ü‚¾‚â‚Á‚Ä‚ñ‚Ì‚©c

79 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 15:07:59.00 ID:LUJGb7UT.net]
‚´‚Á‚Ɠǂñ‚Å‚½‚çA
ƒCƒxƒ“ƒgƒ‹[ƒv”ñ“¯Šú
‚Á‚Ęb‚µ‚Ä‚é‚Ì‚©‚ÆŽv‚Á‚½(Î)
‰½‚ɑ΂µ‚Ă̓¯Šú‚©‚É‚à‚æ‚邾‚낤‚¯‚Ç‚Ë

80 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 19:05:27.58 ID:oSSj0EiH.net]
>>76
JS‚Ì¢ŠE(“Á‚ɃR[ƒ‹ƒoƒbƒN—‚Ý)‚Å“¯ŠúE”ñ“¯Šú‚Æ‚¢‚Á‚½‚ç

function foo(function callback() {
@... //(1)
});
... //(2)

(1)->(2)‚ÅŽÀs‚³‚ê‚é‚Ì‚ª“¯Šú (Array.forEach()‚Æ‚©)
(2)->(1)‚ÅŽÀs‚³‚ê‚é‚Ì‚ª”ñ“¯Šú (setTimeout()‚Æ‚©)

uEffective JavaScriptv‚Ì€–Ú67‚Æ‚©ˆÈ‰º‚Æ‚©ŽQÆ

blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/



81 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 20:55:50.08 ID:Xd0L/8rv.net]
>>16
> uPromise‚ð—‰ð‚µ‚È‚¢‚Æ”ñ“¯Šú‚̃ƒŠƒbƒg‚ð¶‚©‚¹‚È‚¢v‚Á‚Ă̂Í
> •\‘w‚µ‚©—‰ð‚µ‚ĂȂ¢‚Á‚ÄØ‚¾‚í‚È

^—‚¾‚Á‚½‚È

82 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 22:25:56.23 ID:QIYM1JY4.net]
JavaScript‚̓Vƒ“ƒOƒ‹ƒXƒŒƒbƒh‚¾‚¯‚Ç
Node‚ÌIO‚Í”ñ“¯ŠúA‚‚܂è•ʃXƒŒƒbƒh‚Ås‚í‚ê‚é

83 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 22:40:06.78 ID:oSSj0EiH.net]
>>

84 –¼‘OF78
‚Ü‚Ÿ‚Ü‚Ÿw

>>79
•ʃXƒŒƒbƒh‚Ȃ̂̓tƒ@ƒCƒ‹‚¾‚¯‚Ńlƒbƒgƒ[ƒN‚âƒpƒCƒv‚̓ƒCƒ“ƒXƒŒƒbƒh‚¾‚æ
Windows‚ł̓tƒ@ƒCƒ‹‚àƒƒCƒ“ƒXƒŒƒbƒh‚©‚à‚µ‚ê‚ñ
[]
[‚±‚±‰ó‚ê‚Ă܂·]

85 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 23:38:13.20 ID:KFlyuGQs.net]
>>78
‚½‚¾ø‚Á‚Ă邾‚¯‚¾‚ë
——R‚ðq‚ׂæ
‚·‚®‚É——R‚ðq‚ׂç‚ê‚È‚¯‚ê‚΂½‚¾‚Ìø‚è‚Æ”F’è‚·‚é (‚½‚Ô‚ñ–³—‚¾‚낤‚¯‚Ç)

86 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/06(‰Î) 23:44:03.55 ID:KFlyuGQs.net]
>>80
‰½‚ª‚Ü‚Ÿ‚Ü‚Ÿ‚¾‚æw
‚¨‘O‚à‚Ç‚¤‚¹–³”\‚È‚ñ‚¾‚ë
‚Ƃ肠‚¦‚¸‚·‚®‚É——R‚ðŒ¾‚Á‚Ä‚Ý‚ë‚æAŒ¾‚¦‚È‚¢‚­‚¹‚É

87 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/07(…) 14:59:21.93 ID:R3Z2NWM/.net]
>>80
‚»‚ñ‚ÈŽ––³‚¢‚¾‚ë
ƒƒCƒ“ƒXƒŒƒbƒh‚Å‚â‚éˆÓ–¡‚È‚¢‚µ

88 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/07(…) 20:07:44.58 ID:OxX2nn0Y.net]
>>83
‹t‚Él‚¦‚é‚ñ‚¾
ƒlƒbƒg‚âƒpƒCƒv‚̓mƒ“ƒuƒƒbƒLƒ“ƒOI/O‚Å‘½d‰»‚Å‚«‚é‚©‚çƒ[ƒJƒXƒŒƒbƒh‚Å‚â‚éˆÓ–¡‚Ì•û‚ª‚È‚¢
Unix‚̃tƒ@ƒCƒ‹I/O‚Í‚»‚ꂪ‚Å‚«‚È‚¢‚©‚çƒ[ƒJƒXƒŒƒbƒh‚ŃuƒƒbƒLƒ“ƒOI/O‚¹‚´‚é‚𓾂Ȃ¢
ˆÈ‰º‚ÌNote‚É‚à‚»‚¤‚¢‚¤‚±‚Æ‚ª‘‚¢‚Ä‚ ‚é

nikhilm.github.io/uvbook/filesystem.html

ƒ\[ƒX‚¾‚ƃtƒ@ƒCƒ‹Œn‚Ì‘€ì(839s–Ú`)‚݂͂ñ‚Ȉȉº‚ÌPOSTƒ}ƒNƒ‚ðŽg‚Á‚Ä‚é

https://github.com/libuv/libuv/blob/v1.x/src/unix/fs.c#L97

‚»‚Ì’†‚Ìuv__work_submit()‚ªƒ[ƒJƒXƒŒƒbƒh‚Ɉ—‚ðˆË—Š‚·‚éŠÖ”
ƒlƒbƒg‚âƒpƒCƒv‚ł͂»‚ñ‚È‚±‚Æ‚µ‚ĂȂ¢

Úׂð’m‚肽‚¯‚ê‚΃uƒƒbƒLƒ“ƒOI/OAƒmƒ“ƒuƒƒbƒLƒ“ƒOI/OA
‘½d‰»A”ñ“¯ŠúI/O‚Ƈ‚Éà–¾‚µ‚Ä‚é‰ðà‚ð“ǂނƂ¢‚¢
‚»‚µ‚ÄUnix‚ł͖{•¨‚Ì”ñ“¯ŠúI/O‚ÍŽ–ŽÀã‚È‚¢‚±‚Æ‚ð’m‚éw

89 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:release age [2015/01/13(‰Î) 15:11:04.11 ID:LHG94Mlu.net]
‚‚¢‚É–{“ú io.js 1.0.0 ‚ª³Ž®ƒŠƒŠ[ƒXB
v8ƒGƒ“ƒWƒ“‚Ì‚¨‚©‚°‚Å node ‚æ‚è‘å•‘¬“xŒüãB

–{“ú‚Í io.js ‚Ì’a¶“ú‚Å‚ ‚邯‚Æ‚à‚É node ‚Ì–½“ú‚Æ‚à‚È‚è‚Ü‚µ‚½ÅÑÅÑ

90 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/14(…) 08:06:57.60 ID:EnBoJmyV.net]
2‚¿‚á‚ñ‚à‚¨•Ê‚ê‚Ì“ú‚ª‹ß‚¢‹C‚ª‚·‚é



91 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/14(…) 22:24:56.52 ID:knoTvZIn.net]
CPU‚ðŽg‚¤ˆ—‚Ì‘¬“x‚ÍŠm‚©‚ÉŒüサ‚Ä‚¢‚é
‚ªAnode-gyp‚ªƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ_ƒEƒ“ƒ[ƒho—ˆ‚¸ƒrƒ‹ƒh‚ÉŽ¸”s‚µ‚½‚è
v8‚ÌAPI•ÏX‚Ånan‚ªƒRƒ“ƒpƒCƒ‹Ž¸”s‚µ‚½‚è
‚¿‚å‚Á‚Æ¢‚Á‚½

node-gyp‚͂ǂ±‚É‘Îô”Å‚ª‚ ‚é‚©•ª‚©‚ç‚¸Ž©•ª‚Å‚¿‚Ü‚¿‚܃tƒ@ƒCƒ‹–¼‚𒼂µ‚½
nan‚Í–{‰ÆƒŠƒ|ƒWƒgƒŠ‚É‘Îô”ł̃uƒ‰ƒ“ƒ`‚ ‚è

92 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/14(…) 22:26:05.98 ID:knoTvZIn.net]
io.js‚Ì‚±‚Æ‚Ë

ŒãAPath’ljÁ‚·‚邿‚¤‚ÉŽw’肵‚ăCƒ“ƒXƒg[ƒ‹‚µ‚½‚‚à‚è‚Ȃ̂ɉ½ŒÌ‚©’ljÁ‚³‚ê‚ĂȂ¢

93 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 14:43:45.88 ID:sXdFjxSo.net]
nodejsAJavascript‚ÉÚ‚µ‚­‚È‚¢‚¯‚ÇB
Šî–{‚ª”ñ“¯Šú‚Á‚Ă̂ª–Ê“|B
“¯Šú‚ÌJavascript‚Ƃ͕ʕ¨‚¾B
“¯Šú‚̃\[ƒXƒR[ƒh‚É“K‡‚³‚¹‚½‚¢B
‚±‚ê‚͂ǂ¤‚â‚Á‚½‚çŽÀŒ»‚Å‚«‚Ü‚·‚©B download‚ł̓¯Šúˆ—B


data = download("www.google.co.jp/");
data‚ɑ΂·‚鈗;

94 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 14:55:27.50 ID:sXdFjxSo.net]
‚±‚ñ‚Ȃӂ¤‚É‚â‚Á‚Ä‚à‘Ò‚¿‚ªo—ˆ‚¸B


url = "www.google.co.jp/";
data = download(url);
console.log(data);


function download(url) {
data = undefined;
request = require('superagent');
request.get(url)
.end( function(resp){ data = resp.res.text; });
for(i=0; i<10 && data==undefined; i++) setTimeout(null, 500);
return data;
}

95 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 15:07:39.68 ID:WEjV0wIz.net]
“¯Šú‚ÌJavascript‚Á‚ăŒƒA‚¾‚È
generator‚Å‹[Ž—“I‚É‚â‚é‚©async/await‚ð‘Ò‚Ä

96 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 17:26:44.61 ID:x/KvFbcS ]
[‚±‚±‰ó‚ê‚Ă܂·]

97 –¼‘OF.net mailto: >>90
‚±‚ñ‚È‚ñ‚Å‚¢‚¢‚ñ‚¶‚á‚È‚¢H

var httpsync = require('httpsync');

var url = "http://www.google.co.jp/";

var req = httpsync.get(url);
var res = req.end();
var data = res.data.toString();

console.log(data);
[]
[‚±‚±‰ó‚ê‚Ă܂·]

98 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 17:44:25.51 ID:TPIs3k36.net]
JavaScript‚Å‘å—Ê‚ÌƒŠƒNƒGƒXƒg‚ðˆ—‚·‚é‚È‚ç
Žg‚¤‚ׂ«‚̓ƒCƒ“ƒXƒŒƒbƒh‚ðƒuƒƒbƒN‚·‚铯ŠúIO‚È‚ñ‚©‚¶‚á‚È‚­‚Ä
“–‘R”ñ“¯ŠúIO‚¾‚æ‚È

99 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ [2015/01/16(‹à) 17:52:01.40 ID:+cZ2zonb.net]
‚ɂ킩

100 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 20:23:30.77 ID:lUd0kLGp.net]
–{‰Æ‚̃lƒXƒP‚ªÅ‰‚Éì‚Á‚½ƒT[ƒoƒTƒCƒhjavascript‚Í“¯Šú‚Ń}ƒ‹ƒ`ƒXƒŒƒbƒh‚¾‚Á‚½



101 –¼‘OFƒfƒtƒHƒ‹ƒg‚Ì–¼–³‚µ‚³‚ñ mailto:sage [2015/01/16(‹à) 22:01:52.67 ID:TPIs3k36.net]
node‚ÌŒöŽ®‚ª“¯Šú‚ƃXƒŒƒbƒh‚ðŽg‚Á‚½ƒvƒƒOƒ‰ƒ€‚ð‚±‚«‰º‚낵‚Ă邼
Thread-based networking is relatively inefficient and very difficult to use.
‚Æ‚©

nodejs.org/about/






[ ‘±‚«‚ð“Ç‚Þ ] / [ Œg‘єŠ]

‘O100 ŽŸ100 ÅV50 £ [ ‚±‚̃XƒŒ‚ðƒuƒbƒNƒ}[ƒNI Œg‘тɑ—‚é ] 2ch‚Ìread.cgi‚Ö
[{” ŋߗ§‚Á‚½ƒXƒŒ•”M‚¢ƒXƒŒˆê—— : {” ŋߗ§‚Á‚½ƒXƒŒ^‹LŽÒ•ʈꗗ]i LÍMjƒ262KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
’S“–:undef