[過去ログ] 【node.js】サーバサイドjavascript 3【io.js】©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
30
(3): 2015/01/04(日)01:57 ID:kuXg+7pG(5/7) AAS
>>28
> nodeではprocess.nextTick()かsetImmediate()で確実に非同期にできるが?
Qとかはnode用やIE用じゃないが、場合分けしてる可能性はある
> v8のPromiseだってマイクロタスクキューに入れられて結局はnodeのイベントループで処理されるのは同じ
それがJavaScriptで実装出来ない事をしてることじゃなくて?

> 例外のデバッグって具体的には?
説明が面倒になってきた…
Promiseに限った話しじゃないが、ライブラリ内でtry,catchしちゃってると
呼び出し側に例外が来ないって事だ (当たり前の事だけど)
で、Promiseの場合は呼び出し側がエラー処理もしてない場合でも、
デバッガが気を効かせて例外を上げてくれるってだけだ

ま、薄々感づいてると思うが、俺はずっとブラウザ実装の事を言っていた…
しかしPromiseが満たすべき一般的な動作仕様を言ってるつもりではある
31
(2): 2015/01/04(日)02:35 ID:NffMCEWR(7/14) AAS
>>30
> それがJavaScriptで実装出来ない事をしてることじゃなくて?

nodeではv8のマイクロタスクキューもsetImmediate()もnodeのイベントループで処理されるのは同じって意味な
つまりJSのsetImmediate()でコールバックを確実に非同期にできるってこと
これはブラウザでも同じはずだ
違うなら「ブラウザが内部で実装しないと無理」な理由を具体的に書いてくれ

> 呼び出し側に例外が来ないって事だ (当たり前の事だけど)

ライブラリの実装依存ではあるが、nodeでは当たり前じゃない
nodeでは例外を第1引数としてコールバックすることで呼び出し側に例外を伝えるのが流儀だ
だからPromiseでnodeのAPIやライブラリをラップしてもPromise.catch()に例外が渡る
(ラッパーはコールバックの第1引数に例外が渡されたらPromise.reject()を呼び出す)

>>21を見てから薄々じゃなく確信していた
34
(3): 2015/01/04(日)04:38 ID:kuXg+7pG(7/7) AAS
>>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の下の方で言ってるよ
44
(3): 2015/01/04(日)18:08 ID:NffMCEWR(11/14) AAS
>>34
> >>30の下の方で言ってるよ

話がループしてるな… その>>30の以下について

> Promiseに限った話しじゃないが、ライブラリ内でtry,catchしちゃってると
> 呼び出し側に例外が来ないって事だ (当たり前の事だけど)

これはPromiseを実装するQのようなライブラリ側の話だよな?
ライブラリ側がcatchした例外を飲み込んで捨てた場合は確かにそうだが、
QやBluebirdは飲み込まずにPromise.catch()に通知するだろ
Promiseを使わない場合でもnodeの流儀ならコールバックの第1引数で通知する
だからこれは「ブラウザ内蔵のPromiseはJavaScriptで実装出来ない事をしてる」に該当しない
っていうのが>>31で書いたことだ
それに対して>>32

> QとかBluebirdみたいに自前で実装すると例外が飲まれるって話しじゃなかったのか…

と返されたわけだが、前述の通り飲み込まずにPromise.catch()で通知されるはずだから
そうじゃないっていうなら

> で、QとかBluebirdだと例外が飲み込まれるわけ?コードで示せる?

>>33で尋ねたわけだ
その返事が>>34の「>>30の下の方で言ってるよ」だと完全にループ
まずは確認だが、

・QとかBluebirdでは例外が飲まれる

って主張してるんだよな?
それならどういうケースでそうなるのか例を示してくれ
Promise.catch()に伝わらないケースがもしあるなら、おそらくそれはただのバグだ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.234s*