- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
783 :デフォルトの名無しさん[sage]:2016/05/13(金) 08:45:01.29 ID:1hqv3t07 - フラグ持ち回しはしない方がいい、Promiseらしさが壊れるから。
そういう必要が出てきたらCancellable Promiseみたいなサブクラスを使う。 もしくはPromiseに頼りきらずawait/asyncを使ってフロー制御をするのもいいと思う。 代わりにジェネリックを使うとこんなイメージ。 mainScript = spawn( function* () { var v = yield sampleA(); if ( v == null ) yield sampleB(); yield sampleC(); return v; }); function spawn(gfn) { return function () { var gen = gfn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(v) { var r = gen.next(v); Promise.resolve(r.value).then(r.done ? resolve : step).catch(reject); } step(); }); } }
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
784 :デフォルトの名無しさん[sage]:2016/05/13(金) 08:46:29.24 ID:1hqv3t07 - なぜジェネリックが出てきたし、ジェネレータだ
|
- JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
120 :デフォルトの名無しさん[sage]:2016/05/13(金) 09:43:39.39 ID:1hqv3t07 - >>118
JavaScriptと言うより、Webの宿命。ES仕様自体は元々が小さかったのも有り、 妥当で慎重な機能追加で順調に進化してきている。 そして今まで悪かったからこそそれを改善しようと言うのがEWMなのに、 なにを否定したいのかがわからん。 EWMならダメな仕様等をばっさり捨てていくことも可能。 というか結果的に皆が使い良いと認められる仕様だけが標準になるのだから。 更には公開と発展の速度まで引き上げられる。 そしてasm.jsを手書きすることが屁理屈だなんてとんでもない。 勿論emscriptenが書き出すようなのを手書きするのは変態だが、 どうせちょっと高速化を意識するとTypedArrayをメモリに見立ててあれこれするようになる。 それはasm.jsがやってることと同じなので、asm.jsパターンにちょっと直せばいいだけ。 ただのお作法みたいなものでしかなく、そっちこそ何をムキになってるんだか分からん。 別に素のJSがC++と比べてどれだけ早いなんて自慢話をしたいわけじゃないし興味はない。 JSで事実速いコードもそこそこ書くことが出来、その結果現実的に実現できることがあるということが自分にとって重要 もちろんこういうことをするのはレアケース。 だって先にも言ったようにそこら辺に転がっている実用コードの殆どのボトルネックが外部APIだし、 よくあるマイクロベンチみたいなのを意識しても仕方ないから。 一方それ以外の素の速度が重要なケースでは、どんな言語で書いてもそれなりにアルゴリズムやチューンを気にするだろうし、 asm.jsに沿って書く程度十分あり得る範囲だよ。
|
- JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
121 :デフォルトの名無しさん[sage]:2016/05/13(金) 17:53:59.39 ID:1hqv3t07 - Railsとかサーバサイド言語/環境と違って
WEBは1つの実装で色んな時代に作られたデータを読まないといけないのだし 仕様の量も段違いで数十か数百かのモジュールが組み合わさって成り立っているのだから その1つ1つのバージョンを意識したり指定したりということはできないし 原則後方互換性を守りながら拡張していくしか無い WEBがもっとシンプルで昔のようにほぼW3Cが牛耳っていれば問題はなかったのだが 世間や環境がそうさせてくれなかった WEBはマグロのように泳ぎ続けるしかない定め
|