async/awaitはJavaScriptにもあるが、あれはC#とかで必要なのであって、JavaScriptでは要らないね。
理由は、
・外側関数(上位階層)の変数は全部クロージャになっていて読み出せる。
・関数はどこにでも書ける。
から。C的に関数毎に変数が完全に分離している時にはasync/awaitでないと変数が共有出来ないけど、
JavaScriptの文法だとcallbackでも変数共有出来るから、要らん。具体的には、文法は適当だが、
function someTask {
var x = xxx;
var a = await funcA(x);
var b = await funcB(a,x);
}
みたいなのを、
function someTask {
var x = xxx;
var a, b; // 共有変数は上位で宣言しておく。これでクロージャから捕捉出来る。;
function funcA(){}
funcA(funcB); // funcBはcallback、funcA内でxは使える、aにも書ける
function funcB(){} // funcB内でa,xは使える、bにも書ける
}
だからawait毎にぶった切ってcallbackしても、上から順に実行するだけの単純ソースにしかならない。
JavaScriptなら、どっちでもいいや位でしかないんだよ。
C#ではこれができないから、async/awaitが必要だってだけで。
ただ俺もcallbackと言ったがこれは間違いだった。VC++では非同期のcallbackはやってないわ。
ウザイと思ったのは関数ポインタを差し込む時に型チェックがあることだった。
上記の通り、JavaScriptでは関数ポインタでさえあれば引数の型と個数は関係なく呼んでくるので、
関数ポインタを差し込む時にいちいち考える必要がないんだよ。
そして機能追加は追加パスだけの変更で済む。
C++の型チェックだと変更がソース全体に及ぶしこれを断れない。
引数の型とか個数を間違えた場合、普通は根本的に動かないなら、テストでは当てさえすれば検出出来る。
そんな簡単なエラーチェックの為にコンパイルを通すだけの為にいちいち型を合わせたり、
変更がソース全体に波及するのが危険でウザイって事。
C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
180デフォルトの名無しさん (ワッチョイ ad23-vgeI)
2017/08/30(水) 23:03:09.90ID:F1WQhw000■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【北区小学校火災】女性教師「電気ストーブ近くで洗濯物を乾かしていた」 失火とみて捜査 燃えた残骸に“繊維片”付着 ★5 [Ailuropoda melanoleuca★]
- 《独裁に党内から異論噴出!》高市首相 暴かれた本性 〈木下秘書の陰謀論「文春は中国から毎週1000万円もらっている」〉 | 週刊文春 [少考さん★]
- 【W杯】元ブラジル代表ロナウド氏「日本には簡単に勝てる」決勝T1回戦で対戦可能性…避けたいのは「オランダ」 ★2 [首都圏の虎★]
- 「名古屋ほど適した場所ない」 広沢市長、副首都法案提出めぐり [首都圏の虎★]
- 【北区小学校火災】女性教師「電気ストーブ近くで洗濯物を乾かしていた」 失火とみて捜査 燃えた残骸に“繊維片”付着 ★6 [Ailuropoda melanoleuca★]
- AKB48から契約解除の花田藍衣 丸刈りめぐり運営側を非難、対抗する姿勢「何年かかってでも戦っていきます」 [ひかり★]
- 【実況】博衣こよりのえちえちこども裁判クイズ🧪★2
- 【実況】博衣こよりのえちえちこども裁判クイズ🧪★3
- 【高市解散】日本円の価値が下がった事で緑茶の価格が3倍超になる [169920436]
- 【悲報】Yahooニュースさん、高市に都合の悪いコメントを削除していた [268718286]
- チンポーン
- まんさん教師「わたし女ですけど?!?!」👉教室のストーブで洗濯物を乾かして小学校全焼 [398059782]