【node.js】サーバサイドjavascript 5【Nashorn】 (796レス)
1-

515
(1): 2020/09/07(月)13:52 ID:KQEAaFWf(1/2) AAS
AA省
516: 2020/09/07(月)14:38 ID:UUesL9I9(1/4) AAS
説明できますかって何だよ挑発してんのかよ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
517: 2020/09/07(月)15:25 ID:Egt+Qwmp(1/2) AAS
0
4
1
6
2
3
5

とか

0
4
6
1
2
3
5

にならない?
518: 2020/09/07(月)15:45 ID:UUesL9I9(2/4) AAS
ならない
Promiseコンストラクタはコールバックを即時実行する

MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
519: 2020/09/07(月)17:09 ID:3uGG3SyO(1) AAS
>>515
コールスタックが空にならないと、各種キューに入ってる処理は実行されない

最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない

console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
520: 2020/09/07(月)17:21 ID:KQEAaFWf(2/2) AAS
試してみたんですが、setTimeout()で指定している関数の中で、
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 ID:Egt+Qwmp(2/2) AAS
お前はもう死んでいる
522: 2020/09/07(月)17:39 ID:UUesL9I9(3/4) AAS
最初にresolve()した時点でそのPromiseの値は確定するから
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
523: 2020/09/07(月)17:52 ID:neZOTIA1(1) AAS
一旦解決したPromiseを再度変更出来たらそれは改竄と呼ぶべきだな
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
524: 2020/09/07(月)18:07 ID:ieMFgaPK(1) AAS
これ近頃よく見る相手にしちゃダメなやつだな
525: 2020/09/07(月)18:08 ID:UUesL9I9(4/4) AAS
最初のreject()で失敗が確定する
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
526
(1): 2020/09/08(火)00:01 ID:8muSUg7S(1/3) AAS
nodeの非同期を同期的にやりたい時のコードって
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄

早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
527: 2020/09/08(火)01:45 ID:1Wq/gxeB(1) AAS
だからお前はプログラマやめろって
才能なさすぎ
528: 2020/09/08(火)02:32 ID:o0Kum352(1) AAS
>>526
nodeも非同期も関係なくお前がめっちゃ過剰なコード書いてるだけだからな
529: 2020/09/08(火)12:00 ID:gglleEZ2(1/2) AAS
ライブラリは需要があればとっくに作られてる
今現在無いのはつまりそういうことだ
530
(1): 2020/09/08(火)12:14 ID:1sQ8nqM1(1) AAS
そこの無能が探してもいないだけで無いわけじゃないだろ
例えばあるライブラリの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 ID:8muSUg7S(2/3) AAS
select文を投げるのは
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。

それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
532: 2020/09/08(火)13:47 ID:op+kwVtr(1) AAS
新人に言葉で説明できないバカ
新人かわいそう
533: 2020/09/08(火)13:57 ID:c4WmASUK(1) AAS
> 勝手に動かれたら

何も理解してないことがよく分かるw
534
(1): 2020/09/08(火)14:51 ID:QV2EnsJl(1) AAS
お前の場合はMySQL一つしか使わないのが当たり前かもしれないが世の中にはシャードされた複数のMySQLにアクセスしたりキャッシュのRedisにアクセスしたり検索エンジンのelasticsearchにアクセスしたりいろんなことをしなきゃいけないアプリがあったりするわけ
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
1-
あと 262 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s