【node.js】サーバサイドjavascript 5【Nashorn】 (796レス)
【node.js】サーバサイドjavascript 5【Nashorn】 http://mevius.5ch.net/test/read.cgi/tech/1518528093/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
504: デフォルトの名無しさん [] 2020/09/01(火) 21:12:04.15 ID:QR4OvP6I すまん、俺は無能なんだわ バッチ処理は終わるまで時間がかかるから プログレスバーとして 進捗報告として データベースの進捗状況テーブルへ 進行度をアップデートしてんだわ 毎ループ進捗報告しなくていいから %で余り算して定期的に 進捗をアップデートしてんだわ ところがその進捗報告DBアクセスで 非同期が発生してループの順序が乱れる 進捗状況の進行度が進んだり戻ったり トリッキーに変動するんだわ でもループの最後まで到達して完了すると 全てのデータ整合してんだわw なぜ中間状態だけこんなにトリッキーなのか謎 http://mevius.5ch.net/test/read.cgi/tech/1518528093/504
505: デフォルトの名無しさん [sage] 2020/09/01(火) 21:24:55.53 ID:I2eVqLbl コード書くのやめろ http://mevius.5ch.net/test/read.cgi/tech/1518528093/505
506: デフォルトの名無しさん [sage] 2020/09/01(火) 21:59:23.78 ID:usFRsaVF 進捗の書き込みはシリアルにやればいいよね? 「80%完了」の後に「70%完了」が来ても無視すればいい http://mevius.5ch.net/test/read.cgi/tech/1518528093/506
507: デフォルトの名無しさん [] 2020/09/01(火) 22:02:04.20 ID:QR4OvP6I >>506 無視するようにしてるんだよ whereで大小比較して 更新する数の方が小さかったら更新されないように してる でもDB上の数値が減るんだよ。何故だ? http://mevius.5ch.net/test/read.cgi/tech/1518528093/507
508: デフォルトの名無しさん [sage] 2020/09/01(火) 22:05:22.51 ID:3AXmEbq5 コードも無しで言われても知らんわ http://mevius.5ch.net/test/read.cgi/tech/1518528093/508
509: デフォルトの名無しさん [sage] 2020/09/01(火) 22:28:22.77 ID:usFRsaVF >>507 シリアルに書いてないからでしょ 今実行中の進捗報告の書き込みが完了してから 次の進捗報告の書き込みをする 理解できないほうが謎 http://mevius.5ch.net/test/read.cgi/tech/1518528093/509
510: デフォルトの名無しさん [sage] 2020/09/02(水) 02:59:56.27 ID:bHRnrATQ 7月入ってからageながら変なこと書いてんの同じ人っぽいな 挫けないでがんばれよ http://mevius.5ch.net/test/read.cgi/tech/1518528093/510
511: デフォルトの名無しさん [sage] 2020/09/02(水) 12:32:41.24 ID:U40YU3HI 並列処理しなければ良い 1つが、確実に終わってから、 次のものを処理する http://mevius.5ch.net/test/read.cgi/tech/1518528093/511
512: デフォルトの名無しさん [sage] 2020/09/02(水) 13:19:02.32 ID:FrAP3fk+ 回答者まで同じ内容を繰り返し始めたw http://mevius.5ch.net/test/read.cgi/tech/1518528093/512
513: デフォルトの名無しさん [] 2020/09/02(水) 21:31:48.71 ID:C0O9Iab7 >>504 こうなる原因が今日特定出来た ループ自体が多重に並列に動作してた 1つのfor文が動いてるんだと思ってたら ログをよくよく見たらfor文自体が 3つくらい並列で動いてた 勝手に多重実行になった原因は、 MySQLが処理しきれなくなってタイムアウトが 発生したあと nodeが自動で(promiseの仕様?)最初から リクエストの処理をリトライするようで ピタゴラスイッチのアルゴリズム体操見たいに なってたわw 初歩的な質問ですが サーバに飛んできたリクエストだけを中断するには exitが正解ですか? returnが正解ですか? res.end(); ですか? サーバ自体は止めたくありませんが ある関数自体を中断するだけでなく そのリクエストだけ大元から全部中断したいです http://mevius.5ch.net/test/read.cgi/tech/1518528093/513
514: デフォルトの名無しさん [sage] 2020/09/02(水) 22:07:44.16 ID:m9UvO5Rn お前がコード書くのをやめる、が正解 http://mevius.5ch.net/test/read.cgi/tech/1518528093/514
515: デフォルトの名無しさん [sage] 2020/09/07(月) 13:52:39.16 ID:KQEAaFWf どなたか、次の JS のコードの結果が、2,5,3 ではなく、2,3,5 になっている理由を説明出来ますか? console.log( "0" ); var sample = new Promise( function(resolve, reject) { console.log( "1" ); setTimeout(function() { console.log( "2" ); resolve(); console.log( "3" ); }, 1000); }); console.log( "4" ); sample.then( function(value) { console.log( "5" ); }); console.log( "6" ); [結果] 0 1 4 6 2 3 5 http://mevius.5ch.net/test/read.cgi/tech/1518528093/515
516: デフォルトの名無しさん [sage] 2020/09/07(月) 14:38:17.12 ID:UUesL9I9 説明できますかって何だよ挑発してんのかよ resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス マイクロタスクキューでも調べやがれポンコツ http://mevius.5ch.net/test/read.cgi/tech/1518528093/516
517: デフォルトの名無しさん [] 2020/09/07(月) 15:25:12.91 ID:Egt+Qwmp 0 4 1 6 2 3 5 とか 0 4 6 1 2 3 5 にならない? http://mevius.5ch.net/test/read.cgi/tech/1518528093/517
518: デフォルトの名無しさん [sage] 2020/09/07(月) 15:45:30.49 ID:UUesL9I9 ならない Promiseコンストラクタはコールバックを即時実行する MDN executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。 http://mevius.5ch.net/test/read.cgi/tech/1518528093/518
519: デフォルトの名無しさん [sage] 2020/09/07(月) 17:09:51.23 ID:3uGG3SyO >>515 コールスタックが空にならないと、各種キューに入ってる処理は実行されない 最初にconsole.log(“6”);まで処理したらスタックが空になる その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される この関数がreturnするまではスタックは空にならないので それまではキューに入った処理を実行するタイミングはない console.log(“3”);まで実行してreturnしたらスタックが空になるので その後、各種キューに入ってる処理があれば実行される http://mevius.5ch.net/test/read.cgi/tech/1518528093/519
520: デフォルトの名無しさん [sage] 2020/09/07(月) 17:21:12.28 ID:KQEAaFWf 試してみたんですが、setTimeout()で指定している関数の中で、 resolve(111); resolve(222); resolve(333); としてから、 sample.then( function(value) { console.log( "5, value=", value ); }); とすると、 5, value = 111 とだけ表示されて、222, 333 の分は表示されないんですが、どういった 理由なのでしょう。 http://mevius.5ch.net/test/read.cgi/tech/1518528093/520
521: デフォルトの名無しさん [] 2020/09/07(月) 17:33:56.06 ID:Egt+Qwmp お前はもう死んでいる http://mevius.5ch.net/test/read.cgi/tech/1518528093/521
522: デフォルトの名無しさん [sage] 2020/09/07(月) 17:39:40.90 ID:UUesL9I9 最初にresolve()した時点でそのPromiseの値は確定するから つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ Promiseってのは「将来確定する"値"」を表現するもんなんだよ http://mevius.5ch.net/test/read.cgi/tech/1518528093/522
523: デフォルトの名無しさん [sage] 2020/09/07(月) 17:52:24.52 ID:neZOTIA1 一旦解決したPromiseを再度変更出来たらそれは改竄と呼ぶべきだな reject(111); resolve(222); reject(333); これは成功したのか失敗したのかどっちよ? http://mevius.5ch.net/test/read.cgi/tech/1518528093/523
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 273 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s