pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。
node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
ayo.js - node.js 互換で Rod の影響からの脱却を目指す処理系
https://github.com/ayojs/ayo
Nashorn - Java8 からRhinoに代わって同梱されているJavaScriptエンジン
http://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-JA17-Nashorn.pdf
ayo.js の経緯
https://web.archive.org/web/20170821212745/https://github.com/nodejs/TSC/issues/310
javascriptはrubyと比較してもかなり速い
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
http://gihyo.jp/dev/serial/01/realtimeweb/0002
前スレ
【node.js】サーバサイドjavascript 4【io.js】
http://mevius.5ch.net/test/read.cgi/tech/1460359714/
【node.js】サーバサイドjavascript 3【io.js】
http://echo.2ch.net/test/read.cgi/tech/1419673207/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
【node.js】サーバサイドjavascript 5【Nashorn】
1デフォルトの名無しさん
2018/02/13(火) 22:21:33.91ID:moEhrPrC457デフォルトの名無しさん
2020/08/11(火) 00:54:04.11ID:jdRsH5YI これまでの非同期対策手段の
やって欲しかったのはこういうことじゃないんだよ感
がやばい
本来求めてるのはコールバックの記述ないようにして
欲しいのと 余計な関数定義無しで処理を書きたいということ
なのに
Promiseやasync awaitがやってるのは
非同期処理をネストしなくて良くするだけで
肝心のコールバック記述や
余計な関数定義自体はなくならず、
それどころかこれらを使うと更にコードが複雑に
なって可読性が下がってしまう。
そういうゴチャゴチャした部分を無くして欲しいんだよ。
やって欲しかったのはこういうことじゃないんだよ感
がやばい
本来求めてるのはコールバックの記述ないようにして
欲しいのと 余計な関数定義無しで処理を書きたいということ
なのに
Promiseやasync awaitがやってるのは
非同期処理をネストしなくて良くするだけで
肝心のコールバック記述や
余計な関数定義自体はなくならず、
それどころかこれらを使うと更にコードが複雑に
なって可読性が下がってしまう。
そういうゴチャゴチャした部分を無くして欲しいんだよ。
458デフォルトの名無しさん
2020/08/11(火) 02:13:08.66ID:DrUL4lPZ >>457
具体的に理想系を書いてくれるか?
具体的に理想系を書いてくれるか?
459デフォルトの名無しさん
2020/08/11(火) 06:51:02.02ID:KjgiWsfP WScript.sleep(1000);
460デフォルトの名無しさん
2020/08/11(火) 09:44:42.63ID:DyHWpKfR >>458
ボンッキュッボンッ!
ボンッキュッボンッ!
461デフォルトの名無しさん
2020/08/11(火) 12:08:29.63ID:HwJhgroD 互換性ぶっ壊してでもコールバックなAPIをどうにかしてくれ
ってことならDenoじゃね
ってことならDenoじゃね
462デフォルトの名無しさん
2020/08/11(火) 12:31:29.28ID:RcrtMjNU >>457はコールバックだけじゃなくてPromiseも否定してね?
どういうものを期待してるのかわからんが、少なくともdenoじゃ解決にならんかと。
どういうものを期待してるのかわからんが、少なくともdenoじゃ解決にならんかと。
463デフォルトの名無しさん
2020/08/11(火) 13:28:07.94ID:gDej+7HY ならGoだろうな
コールバックも非同期処理もいらない
さようなら
コールバックも非同期処理もいらない
さようなら
464デフォルトの名無しさん
2020/08/11(火) 13:50:34.02ID:OsUriXGV どうせメッセージパッシングに文句垂れるな決まってる
465デフォルトの名無しさん
2020/08/11(火) 13:51:16.33ID:OsUriXGV s/垂れるな/垂れるに/
466デフォルトの名無しさん
2020/08/11(火) 15:38:26.65ID:jdRsH5YI >>458
ごめんちょっとコールバック入っちゃったけど
こんな感じがいい
「await」という単語は他に思い浮かばなかったから
真似しただけで別の単語でもなんでもいい
実際の「await」の処理とは無関係
await setTimeout( ()=>{}, 1000);
console.log('1秒経過しました');
コールバック引数が欲しい場合
ver data = await $.ajax({省略}).done();
console.log('レスポンスを受信しました');
console.log(data);
ごめんちょっとコールバック入っちゃったけど
こんな感じがいい
「await」という単語は他に思い浮かばなかったから
真似しただけで別の単語でもなんでもいい
実際の「await」の処理とは無関係
await setTimeout( ()=>{}, 1000);
console.log('1秒経過しました');
コールバック引数が欲しい場合
ver data = await $.ajax({省略}).done();
console.log('レスポンスを受信しました');
console.log(data);
467デフォルトの名無しさん
2020/08/11(火) 15:42:24.62ID:jdRsH5YI ↑varをverと書いてしまいました。
468デフォルトの名無しさん
2020/08/11(火) 15:50:28.89ID:RcrtMjNU 結局Promise化すれば解決する話に見えるが
中途半端なコールバックの存在が謎。
中途半端なコールバックの存在が謎。
469デフォルトの名無しさん
2020/08/11(火) 16:25:16.36ID:E31y9T9f Promiseとasync/awaitで解決済みだよなぁ
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
って用意するなりimportするなりしておけば
await sleep(1000);
console.log('1秒経過しました');
これだけやんけ
$.ajaxとか書いちゃう知恵遅れさんだからしょうがないか
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
って用意するなりimportするなりしておけば
await sleep(1000);
console.log('1秒経過しました');
これだけやんけ
$.ajaxとか書いちゃう知恵遅れさんだからしょうがないか
470デフォルトの名無しさん
2020/08/11(火) 17:12:35.72ID:dI29r3/p あんまりPromiseの事わかってなくて批判しちゃった感じかな。
471デフォルトの名無しさん
2020/08/11(火) 17:34:48.50ID:DrUL4lPZ472デフォルトの名無しさん
2020/08/11(火) 19:26:37.90ID:HwJhgroD 数行のコードじゃ意図が読み取り辛いけど
非同期関数を同期にしたいってコトなら絶対無理
非同期関数を同期にしたいってコトなら絶対無理
473デフォルトの名無しさん
2020/08/11(火) 19:33:26.30ID:GZz3NG8W 非同期関数を同期関数のように呼び出せるのがasync/awaitだけどな
動作の話じゃなくてソースの見た目の話だろどうせ
そんなこと気にするよりlet/const覚える方が先だぞ
動作の話じゃなくてソースの見た目の話だろどうせ
そんなこと気にするよりlet/const覚える方が先だぞ
474デフォルトの名無しさん
2020/08/12(水) 07:56:55.71ID:XuneBSJh promiseもasync/awaitも何も分かってないけど批判してたということだけは非常によく分かった
475デフォルトの名無しさん
2020/08/14(金) 21:41:29.39ID:Fc7pCCli どうでもいいけど
独自の概念や用語をバンバン押し付けてくる
フレームワークは
ゲロ以下の匂いがプンプンするぜぇーって思うわ
PHP系の糞フレームワークに多い
独自の概念や用語をバンバン押し付けてくる
フレームワークは
ゲロ以下の匂いがプンプンするぜぇーって思うわ
PHP系の糞フレームワークに多い
476デフォルトの名無しさん
2020/08/14(金) 21:47:18.13ID:970Aew80 >>475
逆に、独自の概念や用語を押し付けてこないフレームワークって例えば何?
逆に、独自の概念や用語を押し付けてこないフレームワークって例えば何?
477デフォルトの名無しさん
2020/08/14(金) 21:50:10.65ID:B7DyCr2o アセンブラ
478デフォルトの名無しさん
2020/08/14(金) 21:53:03.39ID:Fc7pCCli479デフォルトの名無しさん
2020/08/14(金) 21:56:59.15ID:970Aew80 >>478
ファサードもDIコンテナも、フレームワーク独自の用語じゃなくてごくごく初歩的な一般用語では?
ファサードもDIコンテナも、フレームワーク独自の用語じゃなくてごくごく初歩的な一般用語では?
480デフォルトの名無しさん
2020/08/14(金) 22:07:25.07ID:Fc7pCCli >>479
そうだね。webとは関係ないよね
webとは関係ない設計上の概念を
Webフレームーワークが押し付けてくるのはおかしいよね
フレームワークはルーティングと
HTMLレンダだけやってりゃいい
DBにもビジネスロジックにも出しゃばってくるべきでは無い
とくにJavaをパクってるだけのPHPでそんな内容
吐き気がするに決まってるだろ
そうだね。webとは関係ないよね
webとは関係ない設計上の概念を
Webフレームーワークが押し付けてくるのはおかしいよね
フレームワークはルーティングと
HTMLレンダだけやってりゃいい
DBにもビジネスロジックにも出しゃばってくるべきでは無い
とくにJavaをパクってるだけのPHPでそんな内容
吐き気がするに決まってるだろ
481デフォルトの名無しさん
2020/08/14(金) 22:24:17.70ID:B01JOFDh DIは、最初はめんどくさい仕組みだなって思うけど、
ある日突然納得感に包まれるぞ。
ある日突然納得感に包まれるぞ。
482デフォルトの名無しさん
2020/08/18(火) 21:29:27.81ID:ZCkQ8Dn9 MySQLとかのDBアクセス
同期的にやってくれるライブラリないんか?
fsはSync版あるやん
同期的にやってくれるライブラリないんか?
fsはSync版あるやん
483デフォルトの名無しさん
2020/08/18(火) 21:50:58.81ID:uzsO+4Q7 async/await使えばいいやろ
fsのsyncなんてお遊びかツールでしか使えんし
fsのsyncなんてお遊びかツールでしか使えんし
484デフォルトの名無しさん
2020/08/18(火) 21:58:10.75ID:wak8Bz4V もうjavascriptだけで出来ないことはない!
javascript最強!
javascript最高!
今、javascriptの伝説が始まる!!!!!!
javascript最強!
javascript最高!
今、javascriptの伝説が始まる!!!!!!
485デフォルトの名無しさん
2020/08/19(水) 04:18:53.44ID:vidjSvBe キッショ
486デフォルトの名無しさん
2020/08/20(木) 19:53:59.17ID:KMfIHaw0 真偽値が非同期になるとヤバイ
trueかfalseのどちらかかと
思っていた変数が
pendingになっててif文の分岐に
ミスがあったとかマジで勘弁
セキュリティやトランザクション処理が
クリティカルな部分でこんなことやられたら叶わん
trueかfalseのどちらかかと
思っていた変数が
pendingになっててif文の分岐に
ミスがあったとかマジで勘弁
セキュリティやトランザクション処理が
クリティカルな部分でこんなことやられたら叶わん
487デフォルトの名無しさん
2020/08/20(木) 20:05:16.58ID:t5R+TL7j ごめんよく分からないので
コードで頼む
コードで頼む
488デフォルトの名無しさん
2020/08/20(木) 20:09:16.66ID:AoU9HO21 低脳はプログラマやめとけ
489デフォルトの名無しさん
2020/08/20(木) 20:16:29.65ID:X1nNk3cj >>486
それマルチスレッドの話じゃね?「非同期」つってもjavascriptのそれとは意味が違う。
それマルチスレッドの話じゃね?「非同期」つってもjavascriptのそれとは意味が違う。
490デフォルトの名無しさん
2020/08/20(木) 20:32:39.56ID:tyNv301J pendingは普通にPromiseの話やろ
Promiseを理解せず非同期のコード書くのが悪い
Promiseを理解せず非同期のコード書くのが悪い
491デフォルトの名無しさん
2020/08/20(木) 20:41:23.02ID:qjxJt4Hn >>489
node.jsのスレだからJavaScriptの話なんだが
nodeってシングルスレで合ってる?
あと素人で申し訳ないが
if文がある時もそれ以降のコードに勝手に進んじゃうの?
たとえば
if(非同期の真偽値メソッド() ){
return;
}
console.log('ifに該当したら逐次処理ならここには到達しないはず');
逐次処理ならelseなしで処理を抜けることが出来るが、
非同期処理だと条件分岐も待ってくれないの?
こういうのがかなり怖い
node.jsのスレだからJavaScriptの話なんだが
nodeってシングルスレで合ってる?
あと素人で申し訳ないが
if文がある時もそれ以降のコードに勝手に進んじゃうの?
たとえば
if(非同期の真偽値メソッド() ){
return;
}
console.log('ifに該当したら逐次処理ならここには到達しないはず');
逐次処理ならelseなしで処理を抜けることが出来るが、
非同期処理だと条件分岐も待ってくれないの?
こういうのがかなり怖い
492デフォルトの名無しさん
2020/08/20(木) 20:44:17.20ID:qjxJt4Hn >>490
非同期のコードが書くの悪いって僕も書きたくないです。
でもデフォルトで非同期の関数ばかりですよね?
ちょっとでも油断すると非同期になっちゃうんです
もちろんasyncやawaitつけてるけど
ついつけ忘れるといつの間にか非同期になってるんです。
非同期のコードが書くの悪いって僕も書きたくないです。
でもデフォルトで非同期の関数ばかりですよね?
ちょっとでも油断すると非同期になっちゃうんです
もちろんasyncやawaitつけてるけど
ついつけ忘れるといつの間にか非同期になってるんです。
493デフォルトの名無しさん
2020/08/20(木) 20:49:28.75ID:AoU9HO21 await付け忘れるヤツが悪い
TypeScriptで型チェックしとけ
TypeScriptで型チェックしとけ
494デフォルトの名無しさん
2020/08/20(木) 21:17:24.78ID:t5R+TL7j495デフォルトの名無しさん
2020/08/20(木) 22:05:57.37ID:wmqy4S/J まぁそこは同期が基本から非同期が基本に頭切り替えないとね
496デフォルトの名無しさん
2020/08/20(木) 22:43:19.84ID:tyNv301J >>491
nodeに限らずJSは基本シングルスレッド
JSで本格的にコード書くなら
シングルスレッドでどうやって非同期や並行処理を実現してるのかを
最低限の知識として知っておく必要がある
setTimeout(fn, 0)で渡したfnがどのタイミングで実行されるのかと同じ
少し詳しめのチュートリアルならだいだい解説してある
nodeに限らずJSは基本シングルスレッド
JSで本格的にコード書くなら
シングルスレッドでどうやって非同期や並行処理を実現してるのかを
最低限の知識として知っておく必要がある
setTimeout(fn, 0)で渡したfnがどのタイミングで実行されるのかと同じ
少し詳しめのチュートリアルならだいだい解説してある
497デフォルトの名無しさん
2020/08/21(金) 00:43:07.71ID:CMx879FZ とは言え今ではスレッドも使えるから上手く利用したいところ。
シングルスレッドにこだわってコールバックの中で時間のかかる処理しちゃったら本末転倒。
シングルスレッドにこだわってコールバックの中で時間のかかる処理しちゃったら本末転倒。
498デフォルトの名無しさん
2020/08/21(金) 01:18:26.76ID:RmDQK783 プロセスも使えるぞ。
せっかくだからV8 isolateも使いたいけどどうやるんだっけ…
せっかくだからV8 isolateも使いたいけどどうやるんだっけ…
499デフォルトの名無しさん
2020/08/21(金) 01:47:45.18ID:fPne1yUC workerが別スレッドのisolate
500デフォルトの名無しさん
2020/09/01(火) 20:38:22.47ID:QR4OvP6I nodeはバッチ処理にはマジで向いてないよな
ループ中に非同期発生すると
ループ番号の順序性があべこべになるとか
ヤバすぎる
ループ外グローバル変数への
数値溜め込み処理とかどうなるんだこれ
あと完了したと思ってた処理が
完了表示されただけで
実はまだ非同期で動作してたとかありそうで
怖すぎる
ループ中に非同期発生すると
ループ番号の順序性があべこべになるとか
ヤバすぎる
ループ外グローバル変数への
数値溜め込み処理とかどうなるんだこれ
あと完了したと思ってた処理が
完了表示されただけで
実はまだ非同期で動作してたとかありそうで
怖すぎる
501デフォルトの名無しさん
2020/09/01(火) 20:42:12.06ID:I2eVqLbl 無能w
502デフォルトの名無しさん
2020/09/01(火) 20:43:25.87ID:tH3NhyKR >>500
アホ過ぎるwww
アホ過ぎるwww
503デフォルトの名無しさん
2020/09/01(火) 20:58:34.78ID:z4ASdXsC >ループ中に非同期発生すると
まるで自然現象とか天災みたいな言い方
まるで自然現象とか天災みたいな言い方
504デフォルトの名無しさん
2020/09/01(火) 21:12:04.15ID:QR4OvP6I すまん、俺は無能なんだわ
バッチ処理は終わるまで時間がかかるから
プログレスバーとして
進捗報告として
データベースの進捗状況テーブルへ
進行度をアップデートしてんだわ
毎ループ進捗報告しなくていいから
%で余り算して定期的に
進捗をアップデートしてんだわ
ところがその進捗報告DBアクセスで
非同期が発生してループの順序が乱れる
進捗状況の進行度が進んだり戻ったり
トリッキーに変動するんだわ
でもループの最後まで到達して完了すると
全てのデータ整合してんだわw
なぜ中間状態だけこんなにトリッキーなのか謎
バッチ処理は終わるまで時間がかかるから
プログレスバーとして
進捗報告として
データベースの進捗状況テーブルへ
進行度をアップデートしてんだわ
毎ループ進捗報告しなくていいから
%で余り算して定期的に
進捗をアップデートしてんだわ
ところがその進捗報告DBアクセスで
非同期が発生してループの順序が乱れる
進捗状況の進行度が進んだり戻ったり
トリッキーに変動するんだわ
でもループの最後まで到達して完了すると
全てのデータ整合してんだわw
なぜ中間状態だけこんなにトリッキーなのか謎
505デフォルトの名無しさん
2020/09/01(火) 21:24:55.53ID:I2eVqLbl コード書くのやめろ
506デフォルトの名無しさん
2020/09/01(火) 21:59:23.78ID:usFRsaVF 進捗の書き込みはシリアルにやればいいよね?
「80%完了」の後に「70%完了」が来ても無視すればいい
「80%完了」の後に「70%完了」が来ても無視すればいい
507デフォルトの名無しさん
2020/09/01(火) 22:02:04.20ID:QR4OvP6I508デフォルトの名無しさん
2020/09/01(火) 22:05:22.51ID:3AXmEbq5 コードも無しで言われても知らんわ
509デフォルトの名無しさん
2020/09/01(火) 22:28:22.77ID:usFRsaVF510デフォルトの名無しさん
2020/09/02(水) 02:59:56.27ID:bHRnrATQ 7月入ってからageながら変なこと書いてんの同じ人っぽいな
挫けないでがんばれよ
挫けないでがんばれよ
511デフォルトの名無しさん
2020/09/02(水) 12:32:41.24ID:U40YU3HI 並列処理しなければ良い
1つが、確実に終わってから、
次のものを処理する
1つが、確実に終わってから、
次のものを処理する
512デフォルトの名無しさん
2020/09/02(水) 13:19:02.32ID:FrAP3fk+ 回答者まで同じ内容を繰り返し始めたw
513デフォルトの名無しさん
2020/09/02(水) 21:31:48.71ID:C0O9Iab7 >>504
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw
初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw
初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
514デフォルトの名無しさん
2020/09/02(水) 22:07:44.16ID:m9UvO5Rn お前がコード書くのをやめる、が正解
515デフォルトの名無しさん
2020/09/07(月) 13:52:39.16ID: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
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
516デフォルトの名無しさん
2020/09/07(月) 14:38:17.12ID:UUesL9I9 説明できますかって何だよ挑発してんのかよ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
517デフォルトの名無しさん
2020/09/07(月) 15:25:12.91ID:Egt+Qwmp 0
4
1
6
2
3
5
とか
0
4
6
1
2
3
5
にならない?
4
1
6
2
3
5
とか
0
4
6
1
2
3
5
にならない?
518デフォルトの名無しさん
2020/09/07(月) 15:45:30.49ID:UUesL9I9 ならない
Promiseコンストラクタはコールバックを即時実行する
MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
Promiseコンストラクタはコールバックを即時実行する
MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
519デフォルトの名無しさん
2020/09/07(月) 17:09:51.23ID:3uGG3SyO >>515
コールスタックが空にならないと、各種キューに入ってる処理は実行されない
最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない
console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
コールスタックが空にならないと、各種キューに入ってる処理は実行されない
最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない
console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
520デフォルトの名無しさん
2020/09/07(月) 17:21:12.28ID:KQEAaFWf 試してみたんですが、setTimeout()で指定している関数の中で、
resolve(111);
resolve(222);
resolve(333);
としてから、
sample.then( function(value) {
console.log( "5, value=", value );
});
とすると、
5, value = 111
とだけ表示されて、222, 333 の分は表示されないんですが、どういった
理由なのでしょう。
resolve(111);
resolve(222);
resolve(333);
としてから、
sample.then( function(value) {
console.log( "5, value=", value );
});
とすると、
5, value = 111
とだけ表示されて、222, 333 の分は表示されないんですが、どういった
理由なのでしょう。
521デフォルトの名無しさん
2020/09/07(月) 17:33:56.06ID:Egt+Qwmp お前はもう死んでいる
522デフォルトの名無しさん
2020/09/07(月) 17:39:40.90ID:UUesL9I9 最初にresolve()した時点でそのPromiseの値は確定するから
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
523デフォルトの名無しさん
2020/09/07(月) 17:52:24.52ID:neZOTIA1 一旦解決したPromiseを再度変更出来たらそれは改竄と呼ぶべきだな
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
524デフォルトの名無しさん
2020/09/07(月) 18:07:19.89ID:ieMFgaPK これ近頃よく見る相手にしちゃダメなやつだな
525デフォルトの名無しさん
2020/09/07(月) 18:08:35.44ID:UUesL9I9 最初のreject()で失敗が確定する
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
526デフォルトの名無しさん
2020/09/08(火) 00:01:18.48ID:8muSUg7S nodeの非同期を同期的にやりたい時のコードって
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄
早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄
早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
527デフォルトの名無しさん
2020/09/08(火) 01:45:13.23ID:1Wq/gxeB だからお前はプログラマやめろって
才能なさすぎ
才能なさすぎ
528デフォルトの名無しさん
2020/09/08(火) 02:32:28.50ID:o0Kum352 >>526
nodeも非同期も関係なくお前がめっちゃ過剰なコード書いてるだけだからな
nodeも非同期も関係なくお前がめっちゃ過剰なコード書いてるだけだからな
529デフォルトの名無しさん
2020/09/08(火) 12:00:40.54ID:gglleEZ2 ライブラリは需要があればとっくに作られてる
今現在無いのはつまりそういうことだ
今現在無いのはつまりそういうことだ
530デフォルトの名無しさん
2020/09/08(火) 12:14:59.78ID:1sQ8nqM1 そこの無能が探してもいないだけで無いわけじゃないだろ
例えばあるライブラリのREADMEから
const conn = await mysql.createConnection({ database: test });
const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]);
await conn.end();
トランザクションも
await connection.beginTransaction();
〜
await connection.commit();
と書ける
例えばあるライブラリのREADMEから
const conn = await mysql.createConnection({ database: test });
const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]);
await conn.end();
トランザクションも
await connection.beginTransaction();
〜
await connection.commit();
と書ける
531デフォルトの名無しさん
2020/09/08(火) 13:42:27.36ID:8muSUg7S select文を投げるのは
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。
それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。
それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
532デフォルトの名無しさん
2020/09/08(火) 13:47:44.03ID:op+kwVtr 新人に言葉で説明できないバカ
新人かわいそう
新人かわいそう
533デフォルトの名無しさん
2020/09/08(火) 13:57:56.32ID:c4WmASUK > 勝手に動かれたら
何も理解してないことがよく分かるw
何も理解してないことがよく分かるw
534デフォルトの名無しさん
2020/09/08(火) 14:51:08.13ID:QV2EnsJl お前の場合はMySQL一つしか使わないのが当たり前かもしれないが世の中にはシャードされた複数のMySQLにアクセスしたりキャッシュのRedisにアクセスしたり検索エンジンのelasticsearchにアクセスしたりいろんなことをしなきゃいけないアプリがあったりするわけ
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
535デフォルトの名無しさん
2020/09/08(火) 16:00:24.51ID:8muSUg7S536デフォルトの名無しさん
2020/09/08(火) 17:40:30.89ID:Qj0BclxS 本当に本当にダメなヤツだなぁ(呆れ)
アクセスってのは接続して要求を投げて結果を受け取ってそれを処理して接続を閉じるまでの一連に決まってるだろ
>>530の例だって後始末まで書いてあるのに全然大変じゃないだろが
アクセスってのは接続して要求を投げて結果を受け取ってそれを処理して接続を閉じるまでの一連に決まってるだろ
>>530の例だって後始末まで書いてあるのに全然大変じゃないだろが
537デフォルトの名無しさん
2020/09/08(火) 19:19:05.95ID:gglleEZ2 とりあえずオライリーでも読んだらいいんじゃない
https://www.am;azon.jp/dp/4873118735/
https://www.am;azon.jp/dp/4873118735/
538デフォルトの名無しさん
2020/09/09(水) 06:42:52.84ID:N3PFvdWI スレ的には真っ当な質問なのに当たり強過ぎでしょ
539デフォルトの名無しさん
2020/09/09(水) 08:44:06.86ID:7Dxn++Hv 質問じゃなくて文句
540デフォルトの名無しさん
2020/09/09(水) 17:07:03.98ID:SFlZHAWP 謙虚に質問してればレスも優しかったかもよ
541デフォルトの名無しさん
2020/09/09(水) 21:03:51.38ID:OFM+73CL 分からないだけならともかく延々と自分以外を貶めつつ無能を晒してたからなぁ
542デフォルトの名無しさん
2020/09/09(水) 21:12:34.50ID:XGuez22g それな
× node.js が悪い
× 非同期が悪い
× promise が悪い
× async/awaitが悪い
× 新人がバカ
○ ID:8muSUg7S がバカ
こうだからな
× node.js が悪い
× 非同期が悪い
× promise が悪い
× async/awaitが悪い
× 新人がバカ
○ ID:8muSUg7S がバカ
こうだからな
543デフォルトの名無しさん
2020/09/10(木) 14:55:06.91ID:rLZBXCmM グレたωωω
544デフォルトの名無しさん
2020/09/10(木) 19:56:10.61ID:FWP0gZB+ clusterでマルチプロセスしようとしたんだけど
「EADDRINUSE(ポートが既に使われている)」
エラーがどうしても出てしまいます。
もちろん既に稼働しているnodeはなく、
fork元のapp.jsでlistenしているのと同じポート
子プロセスでまたbindしようとして失敗しているようで
子プロセスは外部からリクエストを受けるような
ものではなく、重い処理をコア分散させて並列処理したいだけです
子プロセスにポート割り当てが必要な理由がよく分かりませんが
恐らく親プロセスと子プロセス間の通信
とかに使うんでしょうか?
子プロセスのポート割り当て回避か、
親プロセスと別ポートを割り当てる方法はありますか?
「EADDRINUSE(ポートが既に使われている)」
エラーがどうしても出てしまいます。
もちろん既に稼働しているnodeはなく、
fork元のapp.jsでlistenしているのと同じポート
子プロセスでまたbindしようとして失敗しているようで
子プロセスは外部からリクエストを受けるような
ものではなく、重い処理をコア分散させて並列処理したいだけです
子プロセスにポート割り当てが必要な理由がよく分かりませんが
恐らく親プロセスと子プロセス間の通信
とかに使うんでしょうか?
子プロセスのポート割り当て回避か、
親プロセスと別ポートを割り当てる方法はありますか?
545デフォルトの名無しさん
2020/09/10(木) 20:18:09.02ID:VafdMbGz > 子プロセスは外部からリクエストを受けるようなものではなく
それならclusterモジュールは必要なくね
clustetは複数のプロセスを使って大量のリクエストを捌くためのもの
ただの子プロセスならchild_processのメソッドを使う
それならclusterモジュールは必要なくね
clustetは複数のプロセスを使って大量のリクエストを捌くためのもの
ただの子プロセスならchild_processのメソッドを使う
546デフォルトの名無しさん
2020/09/10(木) 20:21:53.78ID:C+K2oJgr547デフォルトの名無しさん
2020/09/10(木) 20:43:38.94ID:oBZEl9rg clusterだと親は子を産むだけの役割じゃなかったっけ
548デフォルトの名無しさん
2020/09/10(木) 20:45:06.67ID:oBZEl9rg あとworker_threadsで同じエラーが出るのはいくらなんでもおかしい
549デフォルトの名無しさん
2020/09/14(月) 20:42:48.98ID:JdQogpR1 >>544 の者ですが
今日これをデバッグしてました。
clusterでもwoker_threadsfでも
child_processでも
「EADDRINUSE」が発生しました
発生するタイミングは子プロセスを生成した時でも
なく
子プロセスでMySQLに対しのコネクション確立時でもなく
確立したDBコネクションからクエリを投げるコード
を実行する時に発生しますが
なぜこのタイミングなのか分かりません
ここで気になったのが
nodeでフロントユーザーに対し
80番ポートをlistenしていて
nodeがローカルのMySQLにアクセスする時
nodeのクライアントポートはフロントと
おなじ80を使うのでしょうか?
それとも別のランダムポートを取得してきて使うのでしょうか?
今日これをデバッグしてました。
clusterでもwoker_threadsfでも
child_processでも
「EADDRINUSE」が発生しました
発生するタイミングは子プロセスを生成した時でも
なく
子プロセスでMySQLに対しのコネクション確立時でもなく
確立したDBコネクションからクエリを投げるコード
を実行する時に発生しますが
なぜこのタイミングなのか分かりません
ここで気になったのが
nodeでフロントユーザーに対し
80番ポートをlistenしていて
nodeがローカルのMySQLにアクセスする時
nodeのクライアントポートはフロントと
おなじ80を使うのでしょうか?
それとも別のランダムポートを取得してきて使うのでしょうか?
550デフォルトの名無しさん
2020/09/14(月) 20:55:49.60ID:AayaioGL 説明と全然違う事象じゃねーの
せめてエラーメッセージとスタックトレース貼れ
せめてエラーメッセージとスタックトレース貼れ
551デフォルトの名無しさん
2020/09/14(月) 20:55:58.86ID:JdQogpR1 続きですか
もう少し調べてみると
「EADDRINUSE」が発生するタイミングは
MySQLに対しコネクション確立後
SQLを投げる時で間違いないと思いますが、
エラーのスタックとレースを見ても
何かのハンドラから駆動されており自分の書いたコードでは
ありません。
nodeかexpressかmysqlモジュールのハンドラ
だと思います
子プロセスはローカルのMySQLに対して
接続して読み書きするだけで
フロントとのやり取りは一切ありませんが
生成元の親プロセスはExpressのapp.js
で立ち上げてるwebアプリです
もう少し調べてみると
「EADDRINUSE」が発生するタイミングは
MySQLに対しコネクション確立後
SQLを投げる時で間違いないと思いますが、
エラーのスタックとレースを見ても
何かのハンドラから駆動されており自分の書いたコードでは
ありません。
nodeかexpressかmysqlモジュールのハンドラ
だと思います
子プロセスはローカルのMySQLに対して
接続して読み書きするだけで
フロントとのやり取りは一切ありませんが
生成元の親プロセスはExpressのapp.js
で立ち上げてるwebアプリです
552デフォルトの名無しさん
2020/09/14(月) 20:56:11.94ID:JdQogpR1 不思議なのが子プロセスで
mysqlとコネクション確立までは失敗せずに
動作し、SQLを投げる段階で
なぜか大元の「app.js」をもう1つ起動しようとしており
app.jsはもう既に起動してるので、
listenポート重複により上記のエラーが発生するわけです
暫定対応で動くようにはなりましたが、
なぜローカルのDBアクセス時にapp.js実行する
動きをするのかの原因がまだ分かっていません
webとは関係ないはずの子プロセスのファイルを
単体でコマンドで実行した場合も
Expressのベースディレクトリにある
「app.js」が実行されていることが分かりました。
自身のコードではこのようなことをしてないので
フレームワークかモジュールの内部処理だと思いますが、
知っている方がいましたら教えてください。
mysqlとコネクション確立までは失敗せずに
動作し、SQLを投げる段階で
なぜか大元の「app.js」をもう1つ起動しようとしており
app.jsはもう既に起動してるので、
listenポート重複により上記のエラーが発生するわけです
暫定対応で動くようにはなりましたが、
なぜローカルのDBアクセス時にapp.js実行する
動きをするのかの原因がまだ分かっていません
webとは関係ないはずの子プロセスのファイルを
単体でコマンドで実行した場合も
Expressのベースディレクトリにある
「app.js」が実行されていることが分かりました。
自身のコードではこのようなことをしてないので
フレームワークかモジュールの内部処理だと思いますが、
知っている方がいましたら教えてください。
553デフォルトの名無しさん
2020/09/14(月) 20:57:39.11ID:JdQogpR1554デフォルトの名無しさん
2020/09/14(月) 21:14:49.11ID:AayaioGL > 単体でコマンドで実行した場合も
> Expressのベースディレクトリにある
> 「app.js」が実行されていることが分かりました。
clusterも何も関係ねーじゃんwww
断言するがフレームワークもモジュールもmysqlも関係なくてお前のバグだから真面目に仕事しろ
子プロセスから再現に関係ない部分を削除しまくって最小限のここで見せられるコードになるまで書き込まなくていいよ
> Expressのベースディレクトリにある
> 「app.js」が実行されていることが分かりました。
clusterも何も関係ねーじゃんwww
断言するがフレームワークもモジュールもmysqlも関係なくてお前のバグだから真面目に仕事しろ
子プロセスから再現に関係ない部分を削除しまくって最小限のここで見せられるコードになるまで書き込まなくていいよ
555デフォルトの名無しさん
2020/10/03(土) 14:17:11.74ID:l4QjehZB https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14232251614?sort=1&page=2
abiko tetuってやつヤバすぎ
abiko tetuってやつヤバすぎ
556デフォルトの名無しさん
2020/10/17(土) 18:10:22.96ID:cX3MrjsP フォルダ全体をコピーしたくて fs-extra のcopySync()を使うために
const fse = require('fs-extra');
としたら、
internal/modules/cjs/loader.js:968
throw err;
^
Error: Cannot find module 'fs-extra'
というエラーが出ます。
npm install fs-extra
や
npm install -g fs-extra
を試しましたが、途中で警告が出たりして、結局、元のエラーは直りません。
直す方法はありますでしょうか?
const fse = require('fs-extra');
としたら、
internal/modules/cjs/loader.js:968
throw err;
^
Error: Cannot find module 'fs-extra'
というエラーが出ます。
npm install fs-extra
や
npm install -g fs-extra
を試しましたが、途中で警告が出たりして、結局、元のエラーは直りません。
直す方法はありますでしょうか?
557デフォルトの名無しさん
2020/10/17(土) 18:39:14.64ID:cX3MrjsP >>556
結論的には、
$ npm install -g fs-extra
$ set NODE_PATH=%AppData%\npm\node_modules
としてから、
node xxxx.js
とすると直りました。
結論的には、
$ npm install -g fs-extra
$ set NODE_PATH=%AppData%\npm\node_modules
としてから、
node xxxx.js
とすると直りました。
レスを投稿する
ニュース
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか… [BFU★]
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 高市早苗、岸田政権(当時)に「台湾有事は日本の有事か」という質問をしていた [175344491]
- ケンタッキーの○○○バーガーという予告がアレを想起すると話題に [523957489]
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- んなっしょい🍬禁止🈲のお🏡
