【node.js】サーバサイドjavascript 5【Nashorn】 (796レス)
上下前次1-新
494: 2020/08/20(木)21:17 ID:t5R+TL7j(2/2) AAS
>>491
if(await hoge())するだけ
何も難しいことない
495: 2020/08/20(木)22:05 ID:wmqy4S/J(1) AAS
まぁそこは同期が基本から非同期が基本に頭切り替えないとね
496: 2020/08/20(木)22:43 ID:tyNv301J(2/2) AAS
>>491
nodeに限らずJSは基本シングルスレッド
JSで本格的にコード書くなら
シングルスレッドでどうやって非同期や並行処理を実現してるのかを
最低限の知識として知っておく必要がある
setTimeout(fn, 0)で渡したfnがどのタイミングで実行されるのかと同じ
少し詳しめのチュートリアルならだいだい解説してある
497: 2020/08/21(金)00:43 ID:CMx879FZ(1) AAS
とは言え今ではスレッドも使えるから上手く利用したいところ。
シングルスレッドにこだわってコールバックの中で時間のかかる処理しちゃったら本末転倒。
498: 2020/08/21(金)01:18 ID:RmDQK783(1) AAS
プロセスも使えるぞ。
せっかくだからV8 isolateも使いたいけどどうやるんだっけ…
499: 2020/08/21(金)01:47 ID:fPne1yUC(1) AAS
workerが別スレッドのisolate
500(1): 2020/09/01(火)20:38 ID:QR4OvP6I(1/3) AAS
nodeはバッチ処理にはマジで向いてないよな
ループ中に非同期発生すると
ループ番号の順序性があべこべになるとか
ヤバすぎる
ループ外グローバル変数への
数値溜め込み処理とかどうなるんだこれ
あと完了したと思ってた処理が
完了表示されただけで
実はまだ非同期で動作してたとかありそうで
怖すぎる
501: 2020/09/01(火)20:42 ID:I2eVqLbl(1/2) AAS
無能w
502: 2020/09/01(火)20:43 ID:tH3NhyKR(1) AAS
>>500
アホ過ぎるwww
503: 2020/09/01(火)20:58 ID:z4ASdXsC(1) AAS
>ループ中に非同期発生すると
まるで自然現象とか天災みたいな言い方
504(1): 2020/09/01(火)21:12 ID:QR4OvP6I(2/3) AAS
すまん、俺は無能なんだわ
バッチ処理は終わるまで時間がかかるから
プログレスバーとして
進捗報告として
データベースの進捗状況テーブルへ
進行度をアップデートしてんだわ
毎ループ進捗報告しなくていいから
%で余り算して定期的に
進捗をアップデートしてんだわ
ところがその進捗報告DBアクセスで
非同期が発生してループの順序が乱れる
進捗状況の進行度が進んだり戻ったり
トリッキーに変動するんだわ
でもループの最後まで到達して完了すると
全てのデータ整合してんだわw
なぜ中間状態だけこんなにトリッキーなのか謎
505: 2020/09/01(火)21:24 ID:I2eVqLbl(2/2) AAS
コード書くのやめろ
506(1): 2020/09/01(火)21:59 ID:usFRsaVF(1/2) AAS
進捗の書き込みはシリアルにやればいいよね?
「80%完了」の後に「70%完了」が来ても無視すればいい
507(1): 2020/09/01(火)22:02 ID:QR4OvP6I(3/3) AAS
>>506
無視するようにしてるんだよ
whereで大小比較して
更新する数の方が小さかったら更新されないように
してる
でもDB上の数値が減るんだよ。何故だ?
508: 2020/09/01(火)22:05 ID:3AXmEbq5(1) AAS
コードも無しで言われても知らんわ
509: 2020/09/01(火)22:28 ID:usFRsaVF(2/2) AAS
>>507
シリアルに書いてないからでしょ
今実行中の進捗報告の書き込みが完了してから
次の進捗報告の書き込みをする
理解できないほうが謎
510: 2020/09/02(水)02:59 ID:bHRnrATQ(1) AAS
7月入ってからageながら変なこと書いてんの同じ人っぽいな
挫けないでがんばれよ
511: 2020/09/02(水)12:32 ID:U40YU3HI(1) AAS
並列処理しなければ良い
1つが、確実に終わってから、
次のものを処理する
512: 2020/09/02(水)13:19 ID:FrAP3fk+(1) AAS
回答者まで同じ内容を繰り返し始めたw
513: 2020/09/02(水)21:31 ID:C0O9Iab7(1) AAS
>>504
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw
初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
上下前次1-新書関写板覧索設栞歴
あと 283 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.016s