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:moEhrPrC426デフォルトの名無しさん
2020/06/20(土) 18:47:10.97ID:3Kl5NtPD Why deps.ts and mod.ts is BAD in Deno
https://dev.to/wongjiahau/why-deps-ts-and-mod-ts-is-bad-in-deno-bjo
https://dev.to/wongjiahau/why-deps-ts-and-mod-ts-is-bad-in-deno-bjo
427デフォルトの名無しさん
2020/06/23(火) 05:08:14.54ID:XbLXAbNL こんな感じのコードでresolveは実行されてもpromiseが伝達しないケースがあるんだけど
内部的にはどういう理屈でそうなってるの?
new Promise(function(resolve,reject){
eventemitter.on('hoge', function(){
this.removeAllListeners();
resolve();
});
});
内部的にはどういう理屈でそうなってるの?
new Promise(function(resolve,reject){
eventemitter.on('hoge', function(){
this.removeAllListeners();
resolve();
});
});
428デフォルトの名無しさん
2020/06/23(火) 08:23:00.68ID:OtlYTeas お前が間違ってるだけに500億ペリカ
429デフォルトの名無しさん
2020/06/23(火) 09:23:44.44ID:jyrEAGC5 >>427
伝達されないケースの具体例を出さないとわからんよ
伝達されないケースの具体例を出さないとわからんよ
430427
2020/06/24(水) 01:09:40.37ID:KrEfgFvd 実際にはlistenerがasync関数で後から発火した他の同期listener内で先にresolve実行してた
そりゃ伝達しないわ…
そりゃ伝達しないわ…
431デフォルトの名無しさん
2020/07/03(金) 01:38:35.72ID:0cCY6OI/ Web API実装の流れでNodeにEventTargetが来たけど使う人いる?
逆なら欲しかったけど
逆なら欲しかったけど
432デフォルトの名無しさん
2020/07/23(木) 10:30:41.88ID:LlcoMZmJ データベースからデータオブジェクトを
returnする関数をあたかも同期関数のように
ただ実行するだけで戻り値を得られるように作りたいです。
DB情報取得関数定義内でasync await promise
を使ってみましたが
戻り値がpromiseのpendingになってしまったので
仕方なく実行側でもpromiseを生成してラップして
then()を使ってようやく戻り値を得られました。
しかし本来は実行側でpromiseとthenを使うことなく
戻り値を得たかったです
どうすれば良いか教えてください。
あと関数定義内でresolveの実行とreturnがどう違うのか
がわかりません。
returnする関数をあたかも同期関数のように
ただ実行するだけで戻り値を得られるように作りたいです。
DB情報取得関数定義内でasync await promise
を使ってみましたが
戻り値がpromiseのpendingになってしまったので
仕方なく実行側でもpromiseを生成してラップして
then()を使ってようやく戻り値を得られました。
しかし本来は実行側でpromiseとthenを使うことなく
戻り値を得たかったです
どうすれば良いか教えてください。
あと関数定義内でresolveの実行とreturnがどう違うのか
がわかりません。
433デフォルトの名無しさん
2020/07/23(木) 11:06:39.72ID:MBVi+zLE 頼むからコードで説明してくれ
似た質問多いけど非同期を同期にすることは不可能
やるなら呼出側の文脈をまるごと非同期にしてawait
似た質問多いけど非同期を同期にすることは不可能
やるなら呼出側の文脈をまるごと非同期にしてawait
434デフォルトの名無しさん
2020/07/23(木) 16:11:17.38ID:+diZSvZW まるごとも今ならTopLevelAwaitがあるから楽だね
callbackに渡されるresolveはpromiseを解決させるためのスイッチであってreturnではない
Promiseに対する理解が曖昧なままDB扱う処理を書くのは危ないと思う
callbackに渡されるresolveはpromiseを解決させるためのスイッチであってreturnではない
Promiseに対する理解が曖昧なままDB扱う処理を書くのは危ないと思う
435デフォルトの名無しさん
2020/07/31(金) 16:11:51.42ID:CGhJjJjO ライブラリっつーのか?
Passportやexpress-sessionってどうやって見つけてきてるの?
Passportやexpress-sessionってどうやって見つけてきてるの?
436デフォルトの名無しさん
2020/08/04(火) 02:57:28.08ID:vydsY05j github express middleware やりたいことの英語
でググる
でググる
437デフォルトの名無しさん
2020/08/06(木) 20:05:58.89ID:MUhDPlnI cryptoで公開鍵ファイルつかって
暗号化したんですが
同じデータが毎回違う暗号になってしまいます。
原因を教えてください
暗号化したんですが
同じデータが毎回違う暗号になってしまいます。
原因を教えてください
438デフォルトの名無しさん
2020/08/07(金) 00:05:01.42ID:TzYKRTqH たぶん、時刻とか、何かランダムな要素を使っているのだろう
439デフォルトの名無しさん
2020/08/07(金) 19:32:20.45ID:ysU+OJWY 今後は大規模システム以外は全てJavaScriptだけで書ける夢のような未来が来るね。
440デフォルトの名無しさん
2020/08/07(金) 20:50:53.11ID:TH1C+bUh なんという地獄
441デフォルトの名無しさん
2020/08/08(土) 10:07:34.33ID:noFfmCPy442デフォルトの名無しさん
2020/08/08(土) 14:52:32.43ID:ciegX9N/ 非同期処理って普通に
バグと脆弱性の温床になるよね?
バグと脆弱性の温床になるよね?
443デフォルトの名無しさん
2020/08/08(土) 17:42:04.42ID:/vlgEPfS その理解のまま触っていたらそうだろうね
444デフォルトの名無しさん
2020/08/08(土) 23:33:14.88ID:f7NhkLiO node.js 面白いな。久しぶりにおもしろい言語だ。
445デフォルトの名無しさん
2020/08/08(土) 23:34:04.83ID:f7NhkLiO PythonとかRubyとかPHPって面白いとか言われてるけど、正直イマイチだよ。
俺はPerlのが好き。
俺はPerlのが好き。
446デフォルトの名無しさん
2020/08/08(土) 23:46:39.64ID:bKK8FlY/ サーバサイドで非同期で
IOやりたい状況なんてそうそうないよ。
ロギングくらいか
とくにトランザクション処理で非同期に
動かれちゃうとほんと地獄
同期的な処理をする専用の
DBアクセス
ファイルIOアクセス
ネットワークアクセス
するライブラリを提供すべき
使用側でpromiseとかじゃなくて
IOやりたい状況なんてそうそうないよ。
ロギングくらいか
とくにトランザクション処理で非同期に
動かれちゃうとほんと地獄
同期的な処理をする専用の
DBアクセス
ファイルIOアクセス
ネットワークアクセス
するライブラリを提供すべき
使用側でpromiseとかじゃなくて
447デフォルトの名無しさん
2020/08/08(土) 23:55:39.53ID:OT1M6D83448デフォルトの名無しさん
2020/08/08(土) 23:56:53.43ID:ZWuolq0D >>444
言語じゃないけどな
言語じゃないけどな
449デフォルトの名無しさん
2020/08/08(土) 23:58:34.55ID:OT1M6D83 ライブラリですね。
450デフォルトの名無しさん
2020/08/09(日) 00:40:28.88ID:sb6ynJ/q 違います
451デフォルトの名無しさん
2020/08/09(日) 00:51:05.32ID:2tff8pgk データベースですね。
452デフォルトの名無しさん
2020/08/09(日) 01:20:28.41ID:8UfVx4ij 違います
453デフォルトの名無しさん
2020/08/09(日) 01:48:00.71ID:2tff8pgk ゴミですね。
454デフォルトの名無しさん
2020/08/09(日) 12:06:37.91ID:4gz4Sy4n そ、違います
455デフォルトの名無しさん
2020/08/09(日) 13:10:04.80ID:HdBz3xHm nude.js ですね
456デフォルトの名無しさん
2020/08/09(日) 16:47:11.71ID:sb6ynJ/q https://www.moongift.jp/2012/02/20120211/
nude.jsは画像をCanvasで読み込んでヌード画像か否かを判定するソフトウェアです。
裸が見たい!たくさんの画像の中からとにかく裸を見たい!と思う人はnude.jsを自動実行してみると幸せになれるかも知れません。
https://github.com/pa7/nude.js/
nude.jsは画像をCanvasで読み込んでヌード画像か否かを判定するソフトウェアです。
裸が見たい!たくさんの画像の中からとにかく裸を見たい!と思う人はnude.jsを自動実行してみると幸せになれるかも知れません。
https://github.com/pa7/nude.js/
457デフォルトの名無しさん
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を同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
レスを投稿する
ニュース
- ドリフトは「危険運転」、法改正で処罰対象に追加へ…「極めて危険だが規定がない」事態解消 [七波羅探題★]
- 【日中対立】在日本中国大使館、サンフランシスコ講和条約「不法かつ無効な文書」とSNSに投稿 高市首相が党首討論で引用 ★2 [ぐれ★]
- 【芸能】「加害の歴史を直視しない政治家が国の顔に」 宍戸開の批判に議論勃! 高市発言で揺れる芸能界… [冬月記者★]
- 拳銃24丁を中国から日本国内に輸入した疑い 中国人の46歳の男逮捕 1丁約3000円で販売 [七波羅探題★]
- 糖尿病疑い全国で1100万人、8年で100万人増…厚労省推計 [蚤の市★]
- 【文春】AKB48『紅白歌合戦』出場へ! 前田敦子&大島優子が限定復活! 『ヘビロテ』など黄金期メドレー披露 神7の多くが出場 [冬月記者★]
- 安倍昭恵「あ〜んコテツ!会いたい!」山上裁判出席決定wwwwwwwww [947332727]
- 【号外】山上徹也裁判に安倍昭恵出席で最終調整 [115996789]
- 40代独身「なんかゲームとか漫画とか消費するだけのコンテンツに完全に飽きちゃったぞ…」 次は何がおすすめ? [909790798]
- 女「AV被害に溢れてるのになぜAV禁止にしないのか」AV女優「余計な事言うのやめて」
- 肉体労働僕氏、デスクワークがしたい
- ホリエモン「家賃ケチって1時間かけて通勤する人は、給料の20%を失っているわけだけど、気づいてる?」 [315293707]
