- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
19 :デフォルトの名無しさん[sage]:2015/01/04(日) 00:10:50.21 ID:kuXg+7pG - >>18
どうせマルチスレッドvs非同期処理の事いってんだろ そんな事言ってんじゃねーんだよ スレの流れも読まずに何一人でブチ切れてんだよアホか
|
- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
21 :デフォルトの名無しさん[sage]:2015/01/04(日) 00:26:18.12 ID:kuXg+7pG - >>20
一応だけど、ブラウザ内蔵のPromiseはJavaScriptで実装出来ない事をしてるから Promise使った方がいいとは思うよ ・渡されたコールバックを確実に非同期で実行する ・飲み込まれた例外をデバッグ出来る ってのがそう
|
- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
24 :デフォルトの名無しさん[sage]:2015/01/04(日) 00:53:04.50 ID:kuXg+7pG - >>23
> ・渡されたコールバックを確実に非同期で実行する これはsetTimeout使ったハックがあってほぼ確実なのは可能だけど、 絶対確実な実装はブラウザが内部で実装しないと無理なんだよね > ・飲み込まれた例外をデバッグ出来る そりゃ、ライブラリ内部のcatch内にブレークポイントを張って待ちかまえていれば 可能だが毎回そんな事すんのか?いやするわけない そして例外がスルーされて何も起きない
|
- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
27 :デフォルトの名無しさん[sage]:2015/01/04(日) 01:03:40.55 ID:kuXg+7pG - >>25
ブラウザ内蔵って…ごめんちゃい QとかBlurbirdはほぼ確実な実装でお茶を濁してる (実用上問題ないけど) 例外の件は>>24の通りだ
|
- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
30 :デフォルトの名無しさん[sage]:2015/01/04(日) 01:57:43.71 ID:kuXg+7pG - >>28
> nodeではprocess.nextTick()かsetImmediate()で確実に非同期にできるが? Qとかはnode用やIE用じゃないが、場合分けしてる可能性はある > v8のPromiseだってマイクロタスクキューに入れられて結局はnodeのイベントループで処理されるのは同じ それがJavaScriptで実装出来ない事をしてることじゃなくて? > 例外のデバッグって具体的には? 説明が面倒になってきた… Promiseに限った話しじゃないが、ライブラリ内でtry,catchしちゃってると 呼び出し側に例外が来ないって事だ (当たり前の事だけど) で、Promiseの場合は呼び出し側がエラー処理もしてない場合でも、 デバッガが気を効かせて例外を上げてくれるってだけだ ま、薄々感づいてると思うが、俺はずっとブラウザ実装の事を言っていた… しかしPromiseが満たすべき一般的な動作仕様を言ってるつもりではある
|
- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
32 :デフォルトの名無しさん[sage]:2015/01/04(日) 02:54:15.95 ID:kuXg+7pG - >>31
> 違うなら「ブラウザが内部で実装しないと無理」な理由を具体的に書いてくれ setImmediate()がコールバックを確実に非同期に出来るっていう仕様ではないだろ 確実に非同期って意味は setImmediate(function callback() { }); a += 1;みたいななんらかの処理 ←これが実行される前にcallbackが絶対実行されない ことを保証してんの? そもそも非標準のAPIなんだけど… > ライブラリの実装依存ではあるが、nodeでは当たり前じゃない QとかBluebirdみたいに自前で実装すると例外が飲まれるって話しじゃなかったのか… Promiseの実装を熱弁してるけど、とりあえずそういう事でいいよ
|
- 【node.js】サーバサイドjavascript 3【io.js】©2ch.net
34 :デフォルトの名無しさん[sage]:2015/01/04(日) 04:38:34.06 ID:kuXg+7pG - >>33
> 仕様はそうなってる Schedules to run handler immediately after user agent events have been flushed. user agent eventsってなんだ? a += 1;の実行が終わってからとは言ってないと思うが > そこはこのNotesに書いてある"platform code"から好きなものに置き換えてくれ 置き換えて何だよ? platform code(要するにJavaScriptでないコード)を実行しろとわざわざ書いてる > 違うなら「ブラウザが内部で実装しないと無理」な理由を具体的に書いてくれ 元の質問は↑これ、お前は論点をずらそうとしてるだけだな > で、QとかBluebirdだと例外が飲み込まれるわけ?コードで示せる? お前眠いのかw 俺はもうもちそうもないが >>30の下の方で言ってるよ
|